Character.isWhitespace(char)和Character.isSpaceChar(char)有什么区别?

5

如果字符为空或者是空格,两种方法都会返回true,否则返回false。我的问题是,为什么Java有这两种方法,因为它们所做的事情是相同的。


2
这里是Java Character API: https://docs.oracle.com/javase/7/docs/api/java/lang/Character.html 请阅读两种方法,你会看到不同之处... - brso05
3个回答

10

方法isSpaceChar(char)仅用于检查Unicode空格字符(SPACE_SEPARATOR、LINE_SEPARATOR、PARAGRAPH_SEPARATOR),而方法isWhiteSpace(char)用于空格以及其他空格字符,如制表符、回车等。

char ch='\t';
System.out.println(Character.isWhitespace(ch));
System.out.println( Character.isSpaceChar(ch));

它输出

true
false

3

isSpaceChar函数检查字符是否为Unicode空格字符,而isWhitespace函数检查任何空白字符。在Java中,一个字符仅当满足以下条件之一时才是空白字符:

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

It is '\t', U+0009 HORIZONTAL TABULATION.  
It is '\n', U+000A LINE FEED.  
It is '\u000B', U+000B VERTICAL TABULATION.  
It is '\f', U+000C FORM FEED.  
It is '\r', U+000D CARRIAGE RETURN.  
It is '\u001C', U+001C FILE SEPARATOR.  
It is '\u001D', U+001D GROUP SEPARATOR.  
It is '\u001E', U+001E RECORD SEPARATOR.  
It is '\u001F', U+001F UNIT SEPARATOR. 

因此,isWhitespace将返回Unicode空格字符以及更多字符的true值。

请参见: https://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#isWhitespace(char)


2
这两个定义的区别在规范中有详细说明:
isWhiteSpace: 根据Java标准确定指定字符是否为空格。只有满足以下条件之一的字符才是Java空白字符:[...]
isSpaceChar: 确定指定字符是否为Unicode空格字符。当且仅当Unicode标准指定它为空格字符时,字符才被认为是空格字符。
这两个定义不同,根据使用情况,您需要其中一个或另一个。对于简单的需求,您可能不关心差异,但显然它确实存在。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接