2012-08-08 25 views
9

Was sind Arten von Leerzeichen in Java? Ich muss meinen Code einchecken, wenn der Text Whitespaces enthält.Whitespaces in Java

Mein Code ist:

if (text.contains(" ") || text.contains("\t") || text.contains("\r") 
     || text.contains("\n")) 
{ 
    //code goes here 
} 

ich bereits über \n wissen, \t, \r und space.

+0

http://stackoverflow.com/questions/4731055/whitespace-matching-regex-java – perilbrain

+1

Ich hatte eine Zeile Code zu 'if (Character.isWhitespace (text.charAt (i)) zu ändern || Character.isSpaceChar (text.charAt (i))) {'um die gewünschten Ergebnisse zu erhalten. – ericharlow

Antwort

8
boolean containsWhitespace = false; 
for (int i = 0; i < text.length() && !containsWhitespace; i++) { 
    if (Character.isWhitespace(text.charAt(i)) { 
     containsWhitespace = true; 
    } 
} 
return containsWhitespace; 

oder unter Verwendung von Guava,

boolean containsWhitespace = CharMatcher.WHITESPACE.matchesAnyOf(text); 
+4

oder setzen Sie das in einer Methode, um den Booleschen Wert zurückzugeben und die unangenehme 'break' und" accumulator "Variable zu vermeiden. – Thilo

+0

Gibt es hier einen Grund, stattdessen [Zeichen # isWhitespace (int)] (http://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#isWhitespace (int)) zu verwenden der vorgeschlagenen [Zeichen # isWhitespace (char)] (http://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#isWhitespace (char))? –

+0

@JB Nizet kannte die Guava lib nicht! Danke – Tito

0

Von Sonne docs:

\ s Ein Leerzeichen: [\ t \ n \ x0B \ f \ r]

Der einfachste Weg ist es mit Regex zu verwenden.

+2

Die einzige Möglichkeit, '\ s' zu verwenden, ist ein regulärer Ausdruck. – EJP

15

Bei einem nicht regulären Ausdruck können Sie für jedes Zeichen Character.isWhitespace überprüfen.

boolean containsWhitespace(String s) { 
    for (int i = 0; i < s.length(); ++i) { 
     if (Character.isWhitespace(s.charAt(i)) { 
      return true; 
     } 
    } 
    return false; 
} 

Welches sind die weißen Flächen in Java?

Die Dokumentation gibt an, welche Java hält Leerzeichen sein:

public static boolean isWhitespace(char ch)

Bestimmt, ob der angegebene Zeichenleerraum ist nach Java. Ein Zeichen ist ein Java-Leerzeichen, wenn und nur wenn sie eine der folgenden Kriterien erfüllt:

  • Es ist ein Unicode-Leerzeichen (SPACE_SEPARATOR, LINE_SEPARATOR oder PARAGRAPH_SEPARATOR), ist aber nicht auch ein non-breaking Raum ('\ u00A0', '\ u2007', '\ u202F').
  • Es ist '\u0009', HORIZONTAL TABULATION.
  • Es ist '\u000A', LINE FEED.
  • Es ist '\u000B', VERTICAL TABULATION.
  • Es ist '\u000C', FORM FEED.
  • Es ist '\u000D', CARRIAGE RETURN.
  • Es ist '\u001C', DATEI SEPARATOR.
  • Es ist '\u001D', GROUP SEPARATOR.
  • Es ist '\u001E', RECORD SEPARATOR.
  • Es ist '\u001F', UNIT SEPARATOR.
-1

Wenn Sie einen regulären Ausdruck basiert Weise berücksichtigen wollen, es zu tun

if(text.split("\\s").length > 1){ 
    //text contains whitespace 
} 
0
boolean whitespaceSearchRegExp(String input) { 

    return java.util.regex.Pattern.compile("\\s").matcher(input).find(); 

} 
+2

Willkommen auf SO. Bitte überprüfen Sie die Richtlinie, um eine gute Antwort zu geben. http://StackOverflow.com/Help/how-to-answer – codingadventures

2

Wenn Sie können Verwenden Sie apache.commons.lang in Ihrem p rojekt, wäre der einfachste Weg, nur die Methode zur Verfügung gestellt, zu verwenden:

public static boolean containsWhitespace(CharSequence seq) 

prüfen, ob die gegebene CharSequence keine Leerzeichen enthält.

Parameter:

seq - the CharSequence to check (may be null) 

Returns:

true if the CharSequence is not empty and contains at least 1 whitespace character 

Es ist leer und null Parameter behandelt und stellt die Funktionalität an einem zentralen Ort.

0

Warum überprüfen Sie nicht, ob text.trim() eine andere Länge hat? :

if(text.length() == text.trim().length() || otherConditions){ 
    //your code 
} 
+0

Weil es einen anderen 'String' erstellt, für einen Anfang. – EJP

Verwandte Themen