如何只检索字符串中的某些字符?

时间:2013-09-04 22:22:04

标签: java indexof

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

5 个答案:

答案 0 :(得分: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];

答案 1 :(得分:0)

final String fileExtension = ...;
final String afterPeriod = fileExtension.substring(fileExtension.lastIndexOf(".")+1);

答案 2 :(得分:0)

您可以将.split()功能用作

String filename="m.txt";
String ext=filename.split(".")[1];

答案 3 :(得分:0)

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

因此得到的数组会产生:[MyJavaProject,Java] 因为数组是从零索引的,所以通过访问第一个元素[1],你将检索“Java”。

答案 4 :(得分:0)

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

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

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

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