webentwicklung-frage-antwort-db.com.de

Wie überprüfe ich, ob ein Java-String nicht aus Leerzeichen besteht?

Ich möchte prüfen, ob Java String oder Character Array nicht nur aus Whitespaces besteht und Java verwendet.

Dies ist eine sehr ähnliche Frage mit Ausnahme von Javascript: 
 Wie kann ich überprüfen, ob Zeichenfolge Zeichen und Leerzeichen enthält, nicht nur Leerzeichen?

EDIT: Ich habe das Bit über alphanumerische Zeichen entfernt, damit es sinnvoller ist.

112
Ankur

Kürzeste Lösung, die mir einfällt:

if (string.trim().length() > 0) ...

Dies prüft nur auf (nicht) Leerzeichen. Wenn Sie nach bestimmten Zeichenklassen suchen möchten, müssen Sie die mächtige match() mit einem Regex verwenden, z.

if (string.matches(".*\\w.*")) ...

... die mindestens ein alphanumerisches Zeichen (ASCII) prüft.

199
Carl Smotricz

Ich würde die Apache Commons Lang-Bibliothek verwenden. Es hat eine Klasse namens StringUtils, die für alle Arten von String-Operationen nützlich ist. Um zu überprüfen, ob ein String nicht alle Whitespaces ist, können Sie Folgendes verwenden:

StringUtils.isBlank(<your string>)

Hier ist die Referenz: StringUtils.isBlank

52
Chris J

Etwas kürzer als von Carl Smotricz erwähnt:

!string.trim().isEmpty();
40
redslime
19
darelf
if(target.matches("\\S")) 
    // then string contains at least one non-whitespace character

Beachten Sie die Verwendung von Back-Slash Cap-S, was "Nicht-Leerzeichen-Zeichen" bedeutet

Ich würde wetten, dass dies die einfachste (und vielleicht die schnellste?) Lösung ist.

5
Rob Raisch

Diese Antwort konzentriert sich mehr auf die Nebenanmerkung " d. H. Hat mindestens ein alphanumerisches Zeichen ". Darüber hinaus fügt es der anderen (früheren) Lösung nicht zu viel hinzu, außer dass es Sie mit NPE nicht verletzt, falls der String null ist. 

Wir möchten false, wenn (1) s null ist oder (2) s leer ist oder (3) s nur Whitechars enthält.

public static boolean containsNonWhitespaceChar(String s) {
  return !((s == null) || "".equals(s.trim()));
}
4
Andreas_D

Wenn Sie nur nach Leerzeichen suchen und sich nicht für Null interessieren, können Sie org.Apache.commons.lang.StringUtils.isWhitespace (String str) verwenden.

StringUtils.isWhitespace(String str);

(Überprüft, ob der String nur Leerzeichen enthält.)

Wenn Sie auch auf Null prüfen möchten (einschließlich Leerzeichen), dann

StringUtils.isBlank(String str);
3
Arun

Wenn Sie Java 11 verwenden, ist die neue Stringvariable isBlank hilfreich:

!s.isBlank();

Wenn Sie Java 8, 9 oder 10 verwenden, können Sie einen einfachen Stream erstellen, um zu prüfen, ob eine Zeichenfolge nicht nur Leerzeichen ist:

!s.chars().allMatch(Character::isWhitespace));

Neben dem Verzicht auf Bibliotheken von Drittanbietern wie Apache Commons Lang haben diese Lösungen den Vorteil, dass Leerzeichen und nicht nur einfache ' '-Leerzeichen verwendet werden können, wie dies bei einer trim- basierten Lösung in vielen anderen Antworten der Fall wäre. Sie können auf Javadocs zugreifen, um eine vollständige Liste aller unterstützten Leerraumtypen zu erhalten. Beachten Sie, dass in beiden Fällen auch leere Zeichenfolgen behandelt werden.

2
Pyves

Die Trimmmethode sollte für Sie funktionieren.

http://download.Oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/api/Java/lang/String.html#trim ()

Gibt eine Kopie der Zeichenfolge mit .__ zurück. führende und nachgestellte Leerzeichen weggelassen. Wenn dieses String-Objekt steht für ein leeres Zeichen Sequenz oder die erste und letzte Zeichen der Zeichenfolge Beide werden durch dieses String-Objekt dargestellt. haben Codes größer als '\ u0020' (das Leerzeichen .__), dann einen Verweis auf Dieses String-Objekt wird zurückgegeben.

Andernfalls, wenn kein Zeichen vorhanden ist mit einem Code größer als '\ u0020' in der String, dann ein neues String-Objekt eine leere Zeichenfolge darstellt ist erstellt und zurückgegeben.

Ansonsten sei k der Index von erstes Zeichen in der Zeichenfolge, dessen Code ist größer als '\ u0020', und lassen Sie m ist der Index des letzten Zeichens in der Zeichenfolge, deren Code größer ist als '\ u0020'. Ein neues String-Objekt ist erstellt, die den Teilstring von .__ darstellt. Diese Zeichenfolge, die mit der .__ beginnt. Zeichen am Index k und endet mit dem Zeichen am Index m, dh der Ergebnis dieser Unterfolge (k, m + 1).

Diese Methode kann zum Beschneiden von .__ verwendet werden. Whitespace vom Anfang und Ende einer Schnur; in der Tat trimmt es alles ASCII auch Steuerzeichen.

Rückgabe: Eine Kopie dieser Zeichenfolge mit führende und nachlaufende Leerzeichen entfernt oder diese Zeichenfolge, wenn keine .__ vorhanden ist. Führender oder nachlaufender Leerraum. Führender oder nachlaufender Leerraum.

Sie können einen leeren String zuschneiden und dann vergleichen oder möglicherweise die Länge auf 0 überprüfen.

1
Corey Ogburn

Mit JDK/11 können Sie jetzt die APIString.isBlankverwenden, um zu überprüfen, ob die angegebene Zeichenfolge nicht vollständig ist 

String str1 = "    ";
System.out.println(str1.isBlank()); // made up of all whitespaces, prints true

String str2 = "    a";
System.out.println(str2.isBlank()); // prints false

Der Javadoc für das gleiche ist:

/**
 * Returns {@code true} if the string is empty or contains only
 * {@link Character#isWhitespace(int) white space} codepoints,
 * otherwise {@code false}.
 *
 * @return {@code true} if the string is empty or contains only
 *         {@link Character#isWhitespace(int) white space} codepoints,
 *         otherwise {@code false}
 *
 * @since 11
 */
public boolean isBlank()
1
nullpointer

trim () und andere erwähnte reguläre Ausdrücke funktionieren nicht für alle Arten von Whitespaces

das heißt: Unicode-Zeichen 'LINE SEPARATOR' http://www.fileformat.info/info/unicode/char/2028/index.htm

Java-Funktionen Character.isWhitespace () deckt alle Situationen ab.

Deshalb sollte die bereits erwähnte Lösung StringUtils.isWhitespace (String)/ oder StringUtils.isBlank (String) Verwendet werden.

0
andreyro

Alternative: 

boolean isWhiteSpaces( String s ) {
    return s != null && s.matches("\\s+");
 }
0
OscarRyz
StringUtils.isEmptyOrWhitespaceOnly(<your string>)

wird prüfen: - ist es null - ist es nur Platz - ist es eine leere Zeichenfolge ""

https://www.programcreek.com/Java-api-examples/?class=com.mysql.jdbc.StringUtils&method=isEmptyOrWhitespaceOnly

0
akakargul