Java 尝试提取用户输入并返回文件扩展名

Java 尝试提取用户输入并返回文件扩展名,java,output,Java,Output,因此,我尝试使用扩展名为.txt或.html的用户输入,但我不确定是否可以像Python一样在Java中进行字符串切片。我能得到一些帮助吗?我试图理解这个概念,而不仅仅是得到一个简单的答案 import java.util.Scanner; public class FileReader { public static void main(String[] args) { Scanner keyboard = new Scanner(System.in); Sy

因此,我尝试使用扩展名为.txt或.html的用户输入,但我不确定是否可以像Python一样在Java中进行字符串切片。我能得到一些帮助吗?我试图理解这个概念,而不仅仅是得到一个简单的答案

    import java.util.Scanner;
public class FileReader {


  public static void main(String[] args) { 
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Please enter a file name and its extension!");
    String fileName = keyboard.next();
    System.out.println(fileName);
    String[] parts = fileName.split("");
    String ext = parts[0];

  }

  /* ADD YOUR CODE HERE */

}

尝试在
上拆分:

String[] parts = fileName.split("\\.");
String ext = parts[1];  // the extension will be the second part
但最好使用以下两个部分进行测试:

if (parts.length > 1) {
    ext = parts[1];
}
else {
    ext = "No extension";
}
如果希望在常规文件名中支持点,请使用以下方法:

if (parts.length > 1) {
    ext = parts[parts.length - 1];
}
else {
    ext = "No extension";
}

尝试在
上拆分:

String[] parts = fileName.split("\\.");
String ext = parts[1];  // the extension will be the second part
但最好使用以下两个部分进行测试:

if (parts.length > 1) {
    ext = parts[1];
}
else {
    ext = "No extension";
}
如果希望在常规文件名中支持点,请使用以下方法:

if (parts.length > 1) {
    ext = parts[parts.length - 1];
}
else {
    ext = "No extension";
}
您还可以与以下内容一起使用:

如果不存在扩展名,则此代码段将返回空字符串。否则,它将返回它认为是扩展的内容

下面是另一个使用正则表达式的聪明方法:

String filename = "some.file.name.txt";
String ext = filename.indexOf(".") > 0 ? filename.replaceAll("^.*\\.(\\w+)$", "$1") : "";
正则表达式中的
*
将贪婪地使用,直到到达最终扩展(如果存在的话),并且它将只保留这个最终扩展。您可以在此处浏览此正则表达式:

您还可以与以下内容一起使用:

如果不存在扩展名,则此代码段将返回空字符串。否则,它将返回它认为是扩展的内容

下面是另一个使用正则表达式的聪明方法:

String filename = "some.file.name.txt";
String ext = filename.indexOf(".") > 0 ? filename.replaceAll("^.*\\.(\\w+)$", "$1") : "";
正则表达式中的
*
将贪婪地使用,直到到达最终扩展(如果存在的话),并且它将只保留这个最终扩展。您可以在此处浏览此正则表达式:


不用提我;P.不必提及我;请留下一些反馈。我们在生产中使用这种方法。我不是下选者,但您可能希望像或避免重新发明轮子一样使用现有的LIB。请留下一些反馈。我们在生产中使用这种方法。我不是下选者,但您可能希望使用现有的LIB,比如或避免重新发明轮子。Dupe:Dupe: