194 Stimmen

Wie prüfe ich, ob meine Zeichenfolge gleich Null ist?

Ich möchte eine Aktion NUR dann durchführen, wenn meine Zeichenfolge einen sinnvollen Wert hat. Also, ich habe dies versucht.

if (!myString.equals("")) {
doSomething
}

und dies

if (!myString.equals(null)) {
doSomething
}

und dies

if ( (!myString.equals("")) && (!myString.equals(null))) {
doSomething
}

und dies

if ( (!myString.equals("")) && (myString!=null)) {
doSomething
}

und dies

if ( myString.length()>0) {
doSomething
}

Und in allen Fällen ist mein Programm doSomething trotz der Tatsache, dass mein String leer ist. Sie ist gleichbedeutend mit null . Was ist also falsch daran?

HINZUFÜGEN:

Ich habe die Ursache des Problems gefunden. Die Variable wurde als Zeichenkette deklariert und als Folge davon, null die dieser Variable zugewiesen wurde, wurde transformiert in "null" ! So, if (!myString.equals("null")) funktioniert.

2 Stimmen

null hat keine Methoden, also auch nicht equals() . Wenn myString waren null wie würden Sie jemals eine Methode darauf aufrufen? :)

1 Stimmen

Darf ich vorschlagen, dass Sie System.out.println(myString) unmittelbar vor dem if-Block, damit Sie sehen können, was dort steht?

1 Stimmen

Woher wissen Sie, dass "es gleichzusetzen ist mit null "?

255voto

polygenelubricants Punkte 362173
if (myString != null && !myString.isEmpty()) {
  // doSomething
}

Als weitere Anmerkung sollten Sie diesen Begriff in der equals Vertrag:

Desde Object.equals(Object) :

Für jeden Referenzwert, der nicht Null ist x , x.equals(null) debe return false .

Der Weg zum Vergleich mit null ist zu verwenden x == null y x != null .

Außerdem, x.field y x.method() wirft NullPointerException si x == null .

34voto

Michael Myers Punkte 183216

Wenn myString es null und ruft dann myString.equals(null) o myString.equals("") scheitert mit einer NullPointerException . Sie können keine Instanzmethoden für eine Null-Variable aufrufen.

Prüfen Sie zuerst auf Null, etwa so:

if (myString != null && !myString.equals("")) {
    //do something
}

Dies macht Gebrauch von Kurzschlussauswertung nicht zu versuchen, die .equals si myString schlägt die Nullprüfung fehl.

26voto

kedar Punkte 233

Apache Commons StringUtils.isNotEmpty ist der beste Weg.

15voto

corm Punkte 151

Wenn myString tatsächlich null ist, schlägt jeder Aufruf der Referenz mit einer Null Pointer Exception (NPE) fehl. Seit Java 6, verwenden Sie #IstLeer anstelle der Längenprüfung (auf jeden Fall NIE einen neuen leeren String mit der Prüfung erstellen).

if (myString != null &&  !myString.isEmpty()){
    doSomething();
}

Übrigens, wenn der Vergleich mit String-Literalen, wie Sie tun, würde die Anweisung umkehren, um nicht eine Null-Prüfung, d. h. zu haben,

if ("some string to check".equals(myString)){
  doSomething();
} 

anstelle von:

if (myString != null &&  myString.equals("some string to check")){
    doSomething();
}

11voto

Salman Nazir Punkte 2489

ARBEITEN !!!!

 if (myString != null && !myString.isEmpty()) {
        return true;
    }
    else {
        return false;
    }

Aktualisiert

Für Kotlin prüfen wir, ob die Zeichenkette null ist oder nicht, indem wir folgendes tun

return myString.isNullOrEmpty() // Returns `true` if this nullable String is either `null` or empty, false otherwise

return myString.isEmpty() // Returns `true` if this char sequence is empty (contains no characters), false otherwise

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X