2016-09-12 3 views
1

Beide von ihnen gibt True zurück, wenn es leeres char/white space ist oder andernfalls false zurückgibt. Meine Frage ist, warum Java hat sowohl die Methoden, wie sie das Gleiche tunWas ist der Unterschied zwischen Character.isWhitespace (char) und Character.isSpaceChar (char)

+2

Hier ist der Java-Charakter API: https://docs.oracle.com/javase/7/docs/api/java/lang/Character.html Bitte beiden Methoden lesen und Sie werden sieh den Unterschied... – brso05

Antwort

6

Methode isSpaceChar(char) ist nur für die Überprüfung Unicode-Leerzeichen (SPACE_SEPARATOR, LINE_SEPARATOR, PARAGRAPH_SEPARATOR), während Methode isWhiteSpace(char) für Raum sowie andere Leerzeichen wie tab, Wagenrücklauf etc

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

Es gibt

true 
false 
1

der Unterschied in der specification buchstabiert wird:

isWhiteSpace: Bestimmt, ob das angegebene Zeichen gemäß Java Leerzeichen enthält. Ein Zeichen ist genau dann ein Java-Leerzeichen, wenn es eines der folgenden Kriterien erfüllt: [...]

isSpaceChar: Bestimmt, ob das angegebene Zeichen ein Unicode-Leerzeichen ist. Ein Zeichen wird genau dann als Leerzeichen betrachtet, wenn es vom Unicode-Standard als Leerzeichen festgelegt wurde.

Diese beiden Definitionen sind unterschiedlich und abhängig vom Anwendungsfall benötigen Sie das eine oder das andere. Für einfache Bedürfnisse mag dir der Unterschied nicht wichtig sein, aber klar ist es da.

2

isSpaceChar wird überprüft, ob das Zeichen ein Unicode-Space-Zeichen ist, während isWhitespace nach einem beliebigen Leerzeichen Char sucht. Ein Zeichen ist ein Java-Leerzeichen, wenn und nur wenn sie eine der folgenden Kriterien erfüllen: es

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. 

So ist Überlappung als isWhitespace return true wird für Unicode Raum Zeichen, sondern auch eine ganze Menge mehr.

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

Verwandte Themen