有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java是否将“普通”空格视为字符的空白。是空白吗?

乍一看,这似乎是不需要动脑筋的。可能是的,但有几件事让我觉得我可能错过了什么。首先the Java documentation for Character.isWhitespace似乎排除了它。什么是和什么不被允许作为空白的定义似乎非常明确(“当且仅当”),第一行说不是一个不间断的空格

我一直认为一个普通的“空格”——当你按下空格键时得到的东西——是一个non-breaking space

那么它在列表中的位置是什么呢?在对this question的最高评分答案中,这个列表被认为是确定的——我只是看错了吗? 而且,在this question中,第一位对最高答案的评论者似乎有他的怀疑(在不同的语境中)。然而,当我构造一个简单的代码进行测试时,它表明正常的空格是空白的一个实例,正如人们所期望的那样

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!" );
        }
    }
}

那么,我是不是看错了清单上的第一项,是不是清单上的其他地方,还是清单本身就是错的


共 (1) 个答案

  1. # 1 楼答案

    你错了;非中断空间可防止换行。这是一种特殊类型的空间,而不是允许换行的“正常”空间。如果“正常”空间是非中断空间,那么当您到达屏幕边缘时,除非每次手动按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')

    以下是空格分隔符覆盖的unicode空格列表:

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

    关于SPACE_SEPARATOR的文档说,它指的是一类Unicode字符,而不是特定字符。标题的“正常”空格(通常由空格键生成)包含在该类别中