【发布时间】:2023-03-24 17:36:01
【问题描述】:
所以,我正在尝试解析一些包含多行文本的文本文件。我的工作是浏览所有单词并将它们打印在文件中。
所以,我阅读了所有的行,我正在循环它们并用空格分隔每一行,如下所示:
line.split("\\s+");
现在,问题是在某些情况下 Java 看不到两个单词之间的空格...
我还试图循环遍历有空格但 Java 看不到它的字符串,Character.isSpaceChar(char) 返回 true...
现在我完全糊涂了……
代码如下:
public void createMap(String inputPath, String outputPath)
throws IOException {
File f = new File(inputPath);
FileWriter fw = new FileWriter(outputPath);
List<String> lines = Files.readAllLines(f.toPath(),
StandardCharsets.UTF_8);
for (String l : lines) {
for (String w : l.split("\\s+")) {
if (isNotRubbish(w.trim())) {
fw.write(w.trim() + "\n");
}
}
}
fw.close();
}
private boolean isNotRubbish(String w) {
Pattern p = Pattern.compile("@?\\p{L}+",
Pattern.UNICODE_CHARACTER_CLASS);
Matcher m = p.matcher(w);
return m.matches();
}
【问题讨论】:
-
你能给那些一些案例提供一个可重现的例子吗?
-
所以,也许它不是 ASCII 空格。但不可能说,因为您提供的可操作细节很少。
-
当然...我忘了举个例子
Beogradu u fajlu Štaba vrhovne komande ( JVUO ) pod oznakom K那里,“u fajlu”和“oznakom K”没有分开,但其他的都是 -
没有看到实际复制/粘贴的数据样本,以及
line.split()周围的代码,不太可能有人可以帮助您。 -
打印每个字符的整数值以确定这些空格字符实际上是什么