有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

出现n位数后的java拆分字符串

我正在解析一些文件夹名称。我有一个程序,列出文件夹的子文件夹并解析文件夹名称

例如,一个文件夹的名称如下:

"Folder.Name.1234.Some.Info.Here-ToBeParsed"

我想对其进行解析,使其名称为“文件夹名”。现在我第一次使用字符串。replaceAll()以除去特殊字符,然后是这个4位序列。我想在这一点上分道扬镳。我怎样才能做到这一点

目前,我的代码如下所示:

// Parsing string if regex p matches folder's name
if(b) {
    //System.out.println("Folder: \" " + name + "\" contains special characters.");
    String result = name.replaceAll("[\\p{P}\\p{S}]", " "); // Getting rid of all punctuations and symbols.
    //System.out.println("Parsed: " + name + " > " + result);

    // If string matches regex p2
    if(b2) {
        //System.out.println("Folder: \" " + result + "\" contains release year.");
        String parsed_name[] = result.split("20"); // This is the line i would like to split when 4-digits in row occur.
        //System.out.println("Parsed: " + result + " > " + parsed_name[0]);
        movieNames.add(parsed_name[0]);
    }

或者也许有更简单的方法?提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    你应该保持这样的简单:

    String name = "Folder.Name.1234.Some.Info.Here-ToBeParsed";
    String repl = name.replaceFirst( "\\.\\d{4}.*", "" ).
             replaceAll( "[\\p{P}\\p{S}&&[^']]+", " " );
    //=> Folder Name
    
    • replaceFirst正在删除一个点和4个数字后的所有内容
    • replaceAll将所有标点符号和空格(撇号除外)替换为单个空格