当前位置: 首页 > 面试题库 >

Java在字符串中看不到空格

孟谭三
2023-03-14
问题内容

因此,我正在尝试解析一些具有多行文本的文本文件。我的工作是遍历所有单词并将其打印出文件。

因此,我阅读了所有行,然后遍历它们,并用空格将每一行分开,如下所示:

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} 将匹配任何一种空格字符

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



 类似资料:
  • 问题内容: 为什么下面的工作?我希望会被抛出。 问题答案: 为什么必须起作用? 在JLS 5,第15.18.1.1节 JLS 8§15.18.1 “字符串连接运算符+” ,导致JLS 8,§5.1.11 “字符串转换”,要求该操作无故障成功: …现在只需要考虑参考值。如果引用为null,则将其转换为字符串“ null”(四个ASCII字符n,u,l,l)。否则,转换的执行就好像是通过调用不带参数的

  • 问题内容: 如何检查字符串是否包含空格字符,空格或“”。如果可能,请提供一个Java示例。 例如: 问题答案: 要检查字符串是否 包含空格,请 使用并调用它的find方法。 如果要检查它是否 仅包含空格, 则可以使用:

  • 问题内容: 我有一个像这样的字符串: 我想删除字符串中的空格。我试过了,但这只删除了整个字符串前后的空格。我也尝试过,但后来=也被删除了。 如何使用以下方法实现字符串: 问题答案: 删除所有空格和不可见字符(例如,)。 并产生相同的结果。 第二个正则表达式比第一个正则表达式快20%,但是随着连续空格数量的增加,第一个正则表达式的性能优于第二个正则表达式。 如果不直接使用,则将值分配给变量:

  • 我有以下JSON字符串: 我只想要和。我试过这样的方法: 但我得到了以下错误: 我只使用过几次JSON。有人能帮我吗? 对我来说最好的例子是这样的,我在另一个例子中做过: 可能吗? 现在我已经做到了: 我试着这样做: 然后: 但现在当我做一个Prtinout时,我会得到和以前一样的错误:

  • 字符串中存在的首尾空格一般情况下都没有任何意义,如字符串“ Hello ”,但是这些空格会影响到字符串的操作,如连接字符串或比较字符串等,所以应该去掉字符串中的首尾空格,这需要使用 String 类提供的 trim() 方法。 trim() 方法的语法形式如下: 使用 trim() 方法的示例如下: 从该示例中可以看出,字符串中的每个空格占一个位置,直接影响了计算字符串的长度。 如果不确定要操作的

  • 我想问是否有一种方法可以根据流式映射的键值使用不同的分隔符或前缀。 这是我的代码: 它打印的是什么 学生也有类似的问题,但我的问题是关于平均值的,所以请忽略它们。这是它应该是什么样子。 所以“|”是完全对齐的