正则表达式将字符串与星号匹配

时间:2017-04-05 05:56:56

标签: java arrays regex file regex-negation

我用Java编码,我想分割我的字符串。我想把它分开。

/* sort */

是的我打算将我读过的.java文件拆分为字符串,这样我就需要包含" / * sort * /"。我正在创建一个代码来排序在java类文件中预定义的数组。

正是这样,并在

做另一次分裂
}

然后我想要帮助如何拆分数组,因为我会留下

一个例子就是这个

final static String[] ANIMALS = new String[] /* sort */ { "eland", "antelope", "hippopotamus"};

我的目标是在.java文件中对该Array进行排序并替换它。这是我目前的代码

    private void editFile() throws IOException {
    //Loads the whole Text or java file into a String
    try (BufferedReader br = new BufferedReader(new FileReader(fileChoice()))) {
        StringBuilder sb = new StringBuilder();
        String line = br.readLine();

        while (line != null) {
            sb.append(line);
            sb.append(System.lineSeparator());
            line = br.readLine();
        }
        everything = sb.toString();
    }
    arrayCutOff = everything.split("////* sort *////");
    for(int i = 0; i < arrayCutOff.length; i++){
        System.out.println(arrayCutOff[i]);
    }
}

这基本上完全读取整个.txt或.java文件,并将完全相同的格式化为一个字符串。我计划将它拆分为/ * sort * /并对数组进行排序,但我意识到如果我这样做,我可能无法替换它。

1 个答案:

答案 0 :(得分:2)

考虑到您使用java 8,您可能会朝这个方向发展:

private void editFile() throws IOException {
  List<String> lines = Files.readAllLines(Paths.get(fileChoice()));
  String content = lines.stream().collect(Collectors.joining(System.lineSeparator()));
  Stream.of(content.split(Pattern.quote("/* sort */"))).forEach(System.out::println);
}

然而,你要求的技巧是Pattern.quote,它可以追溯到Java 5.它会输入一个文字,因此它可以在regExs中用作文字并且更多一些我认为方便(而且我认为可靠)比用反斜杠摔跤......