出于 Character.isWhitespace 的目的,Java 是否将 'normal' space 视为白色 space?

Does Java regard a 'normal' space as whitespace for the purposes of Character.isWhitespace?

乍一看,这似乎很简单。可能是,但有几件事让我觉得我可能遗漏了一些东西。首先 the Java documentation for Character.isWhitespace 似乎排除了它。白色space允许和不允许的定义似乎非常明确('if and only if')并且第一行说not一个不间断的space.

我一直把普通的 'space' - 当你按下 space 条时得到的东西 - 视为 non-breaking space

那么它在列表中的位置是什么?该列表在 this question 的最高评价答案中被认为是确定的 - 我只是读错了吗? 此外,this question 中最高答案的第一位评论者似乎有他的疑虑(在不同的上下文中)。然而,当我构造一段简单的代码来测试时,它表明正常的 space 是 whitespace 的一个实例,正如人们所期望的那样。

import static java.lang.Character.isWhitespace;

public class WhitespaceCheck {

   public static void main(String[] args) {

        Character test = ' ';

        if (Character.isWhitespace(test)) {
            System.out.println("Is whitespace!" );                        
        } else {
            System.out.println("Is not whitespace!" );
        }
    }
}

那么,我是不是看错了列表中的第一项,它是列表中的其他地方,还是列表本身就是错误的?

你错了; a non-breaking space 防止换行。它是一种特殊类型的 space 而不是允许换行的 "normal" 类型。如果 "normal" space 是 non-breaking space 那么当你到达屏幕边缘时,行永远不会换行,除非你每次都手动按下 return。

第一行说:

It is a Unicode space character (SPACE_SEPARATOR, LINE_SEPARATOR, or PARAGRAPH_SEPARATOR) but is not also a non-breaking space ('\u00A0', '\u2007', '\u202F')

可在此处找到 SPACE_SEPARATOR 涵盖的 unicode whitespace 列表:

https://en.wikipedia.org/wiki/Whitespace_character

SPACE_SEPARATOR 的文档说它指的是一类 Unicode 字符,而不是特定字符。标题的'normal'space(通常是由space栏产生的)属于此类。