gpt4 book ai didi

Java 在字符串中看不到空格

转载 作者:行者123 更新时间:2023-12-01 13:14:21 26 4
gpt4 key购买 nike

所以,我正在尝试解析一些具有多行文本的文本文件。我的工作是检查所有单词并将它们打印在文件中。

因此,我读取了所有行,循环遍历它们并用空格分隔每一行,如下所示:

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();
}

最佳答案

我怀疑您的文本字符类似于 non-breakable-space这不是空格,因此无法通过 \\s 进行匹配。

在这种情况下,请尝试使用 \p{Zs} 而不是 \s

http://www.regular-expressions.info/unicode.html 中所述

\p{Zs} will match any kind of space character

顺便说一句,如果您还想包含除空格之外的其他分隔符,例如制表符 \t 或换行符 \r \n 您可以组合\p{Zs}\s 类似 [\p{Zs}\s]

关于Java 在字符串中看不到空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22585683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com