如何拆分字符串并输出拆分的一部分?

时间:2013-09-02 12:01:52

标签: java arrays string

我最近问了一个过于笼统和随意的问题,所以这次我会尝试以正确的方式进行。

任务是: 写一个返回File扩展名的方法,即文件名中最后一个点(。)后面的字母如果文件名是hello1.doc,那么方法应该返回doc如果没有点(。)文件名,然后该方法应返回“未知扩展名”

我遇到代码输出没有显示任何内容的问题,更不用说我希望它显示的字符串部分

这是我的代码:

public Boolean Ftype() {

    if
    (fileName.indexOf('.') != -1)
    {
        String x= fileName.toString();
        String[] y=x.split(".");


        System.out.println("File is of type "+ Arrays.toString(y));
        return true;
    }
    else
    {
        System.out.println("Unknown File Extension");
        return false;
    }


}

对于f2 =“tests.doc”,输出为文件的类型为[]

如何获取输出文件的代码类型为 [doc]或doc?

先谢谢你的帮助,

编辑:显然,拆分并不是提取“.doc”的唯一方法,如果这会使我的问题无效或使其过于笼统等,则道歉。

6 个答案:

答案 0 :(得分:8)

你需要逃避点:

String[] y=x.split("\\.");

另一种解决方案是使用String.lastIndexOfString.substring,因为不需要正则表达式。

答案 1 :(得分:6)

你需要逃避点,因为它是一个正则表达式元字符:

String[] y = x.split("\\.");

其他可能性是使用字符类

String[] y = x.split("[.]");

或使用Pattern.quote()为您进行必要的转义。

String[] y = x.split(Pattern.quote("."));

以上是您的代码的修复程序。对您的问题更合理的解决方案是

if (fileName.indexOf('.') != -1) {
    System.out.println("File is of type "+ x.substring(x.lastIndexOf('.') + 1));
    return true;
} else {
    System.out.println("Unknown File Extension");
    return false;
}

谨防foo.tar.gz等文件,其中文件名为foo,而extion tar.gz也包含一个点。

答案 2 :(得分:1)

你并没有真正的正则表达式。

此代码应该有效(没有正则表达式):

if (fileName.indexOf('.') > 0) {
    System.out.println("File is of type "+ filename.substring(filename.lastIndexOf('.')+1);
}
else {
    System.out.println("Unknown File Extension");
}

答案 3 :(得分:1)

public Boolean FType() {
        String[] tokens = fileName.split("\\."); // Use regex
        if (tokens.length == 1) { // No dots
            System.err.println("Unknown File Extension");
            return false;
        }
        System.out.println("File is of type [" + tokens[tokens.length - 1] + "]");
        return true;
    }

你必须逃避“。”字符 - > “\\。”

此函数使用“。”拆分fileName。并显示最后一个令牌。因此,如果fileName是“test.something.doc”,结果将是“doc”。

答案 4 :(得分:1)

在这种情况下,以下内容会为File is of type [File, doc]

提供File.doc
        String[] y=x.split("\\.");
        System.out.println("File is of type "+ Arrays.toString(y));

如果您想获得扩展程序,请按以下步骤更改您的代码。

        String[] y=x.split("\\.");
        System.out.println("File is of type "+ y[1]);

但是,如果您的文件名称为my.File.doc,会发生什么?那么这种方式并不好。所以最好使用以下内容。

    public static Boolean Ftype(String fileName) {
    if(fileName.lastIndexOf('.') != -1){
        String x= fileName.toString();
        String[] y=x.split("\\.");
        System.out.println("File is of type "+ y[y.length-1]);
        return true;
    }
    else
    {
        System.out.println("Unknown File Extension");
        return false;
    }

答案 5 :(得分:0)

System.out.println(“文件类型为”+ y [y.length-1]);