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

Java 如何仅检索字符串中的某些字符?,java,indexof,Java,Indexof,我有一个对话框,要求用户在其中放置一个扩展名为的文件名。例如,“MyJavaProject.java”。作为输出,我只想检索点后面的内容(例如“.java”)。我该怎么做 您可以使用.split()函数作为 final String fileExtension = ...; final String afterPeriod = fileExtension.substring(fileExtension.lastIndexOf(".")+1); String filename="m.txt";

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

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

final String fileExtension = ...;
final String afterPeriod = fileExtension.substring(fileExtension.lastIndexOf(".")+1);
String filename="m.txt";
String ext=filename.split(".")[1];

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

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

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

例如,如果用户输入“some.bad.input.java”,则split()[1]将无法正常工作,因为它将为您提供可能需要的子字符串“bad”,而不是“java”。如果使用split(),则应获取最后一个数组元素,而不仅仅是假定元素1

如果用户输入一个不带“.”的字符串,则使用lastIndexOf()将无法正常工作,例如“somebadinput”,其中lastIndexOf()将返回-1,而子字符串(lastIndexOf()+1)将只提供用户输入的整个字符串


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

yourString.split(“.”[1];请注意,您应该包括您尝试过的内容。虽然这很容易回答(因此你会得到很多答案),但通常S.O.不愿意展示你已经完成的工作。
    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];