正则表达式匹配一个字符串与星号
问题描述:
我使用Java编码,我想分割我的字符串。我想分开它。正则表达式匹配一个字符串与星号
/* sort */
是的,我打算拆分,所以我需要它包含“/ * *排序/”我已阅读作为一个字符串一个.java文件。我创建了一个代码,它对java类文件中预定义的数组进行排序。
确切说和做,在
}
另一个分割,然后我想帮助如何去分手了数组,因为我会
留下一个例子是此
final static String[] ANIMALS = new String[] /* sort */ { "eland", "antelope", "hippopotamus"};
我的目标是将该数组排序到.java文件中并替换它。这是我当前的代码
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 * /并对数组进行排序,但是我意识到如果我这样做了,我可能无法替换它。
答
your're使用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的它会qoute字面所以可以用作regExs中的文字,并且比摔跤带反斜杠更方便(可靠,我认为)...
你想说什么,你听起来很困惑。你能用一个例子多解释一下吗? –
@ZubairNabi只是举了一个例子 – Peerless
你真的问如何逃避正则表达式中的特殊字符吗?您无法在网络上找到*任何*答案? – Andreas