我最近问了一个过于笼统和随意的问题,所以这次我会尝试以正确的方式进行。
任务是: 写一个返回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”的唯一方法,如果这会使我的问题无效或使其过于笼统等,则道歉。
答案 0 :(得分:8)
答案 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]);