0

我有一个对话框,要求用户将带有扩展名的文件名放入其中。例如,“MyJavaProject.java”。作为输出,我只想检索点之后的内容(或“.java”作为示例)。我该怎么做呢?

4

5 回答 5

1
    String input = JOptionPane.shoeMessageDialog(null,"Enter the file name");
    String[] dev = input.split(".");

    // this is to make sure you get the last string extension , if you have multiple dots just in case
    String extension = dev[dev.length-1];
于 2013-09-04T22:27:46.957 回答
0

你可以使用.split()函数作为

String filename="m.txt";
String ext=filename.split(".")[1];
于 2013-09-04T22:26:02.267 回答
0

lastIndexOf() 和 split() 都是不错的答案,但是如果用户输入错误的输入,则此问题的其他一些答案中提供的示例将无法正常工作。

例如,如果用户输入“some.bad.input.java”,split()[1] 将无法正常工作,它会为您提供您可能想要的子字符串“bad”而不是“java”。如果你使用 split(),那么你应该得到最后一个数组元素,而不是仅仅假设元素 1。

如果用户输入的字符串没有“.”,则使用 lastIndexOf() 将无法正常工作 像“somebadinput”,其中 lastIndexOf() 将返回 -1,而 substring(lastIndexOf()+1) 只会为您提供用户输入的整个字符串。

因此,无论您使用哪种方式,都需要在尝试获取子字符串之前验证用户输入。

于 2013-09-04T23:47:45.080 回答
0

这里的一个关键点是,当您在字符串上调用 .split(".") 时,会将结果存储在一个数组中,该数组使用提供的字符串作为分隔符。

因此,结果数组将产生:[MyJavaProject, Java],因为数组从零开始索引,通过访问第一个元素 [1],您将检索“Java”。

于 2013-09-04T22:37:24.940 回答
0
final String fileExtension = ...;
final String afterPeriod = fileExtension.substring(fileExtension.lastIndexOf(".")+1);
于 2013-09-04T22:23:07.053 回答