webentwicklung-frage-antwort-db.com.de

Wie konvertiere ich ein String-Objekt in ein Boolesches Objekt?

Wie konvertiert man ein String Objekt in ein Boolean Objekt?

309
Suresh Chaganti

Versuchen Sie (abhängig von dem gewünschten Ergebnistyp):

Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");

Vorteil:

  • Boolean: Hiermit werden keine neuen Instanzen von Boolean erstellt, sodass die Leistung verbessert wird (und weniger Speicherbereinigung). Die beiden Instanzen von Boolean.TRUE oder Boolean.FALSE werden wiederverwendet.
  • boolescher Wert: Es wird keine Instanz benötigt, Sie verwenden den primitiven Typ.

Die offizielle Dokumentation befindet sich im Javadoc .


AKTUALISIERT:

Autoboxing könnte auch verwendet werden, hat aber Leistungskosten.
Ich schlage vor, es nur zu verwenden, wenn Sie sich selbst besetzen müssten, nicht, wenn die Besetzung vermeidbar ist.

496
KLE

Sie müssen vorsichtig sein, wenn Sie Boolean.valueOf (string) oder Boolean.parseBoolean (string) verwenden. Der Grund dafür ist, dass die Methoden immer false zurückgeben, wenn der String nicht "true" ist (der Fall wird ignoriert).

Zum Beispiel:

Boolean.valueOf("YES") -> false

Aufgrund dieses Verhaltens würde ich empfehlen, einen Mechanismus hinzuzufügen, um sicherzustellen, dass die Zeichenfolge, die in einen Booleschen Wert übersetzt werden soll, einem bestimmten Format folgt.

Zum Beispiel:

if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
    Boolean.valueOf(string)
    // do something   
} else {
    // throw some exception
}
87
zlajo
Boolean b = Boolean.valueOf(string);

Der Wert von b ist wahr, wenn die Zeichenfolge keine Null ist und true entspricht (Groß-/Kleinschreibung wird ignoriert).

21
CJS

Neben der hervorragenden Antwort von KLE können wir auch etwas flexibler machen:

boolean b = string.equalsIgnoreCase("true") || string.equalsIgnoreCase("t") || 
        string.equalsIgnoreCase("yes") || string.equalsIgnoreCase("y") || 
        string.equalsIgnoreCase("sure") || string.equalsIgnoreCase("aye") || 
        string.equalsIgnoreCase("oui") || string.equalsIgnoreCase("vrai");

(inspiriert von zlajos antwort ... :-))

17
PhiLho
boolean b = string.equalsIgnoreCase("true");
11
Zed

Nun, wie jetzt im Januar 2018, ist der beste Weg dafür, Apaches BooleanUtils.toBoolean zu verwenden.

Dies wandelt jeden booleschen Wert wie einen String in einen booleschen Wert um, z. J, ja, wahr, N, nein, falsch usw.

Wirklich praktisch!

9
david30xie
public static boolean stringToBool(String s) {
        s = s.toLowerCase();
        Set<String> trueSet = new HashSet<String>(Arrays.asList("1", "true", "yes"));
        Set<String> falseSet = new HashSet<String>(Arrays.asList("0", "false", "no"));

        if (trueSet.contains(s))
            return true;
        if (falseSet.contains(s))
            return false;

        throw new IllegalArgumentException(s + " is not a boolean.");
    }

Mein Weg, String in Boolean umzuwandeln.

3
AechoLiu
String[] values= new String[]{"y","Y","n","N","Yes","YES","yes","no","No","NO","true","false","True","False","TRUE","FALSE",null};
for(String booleanStr : values){
    System.out.println("Str ="+ booleanStr +": boolean =" +BooleanUtils.toBoolean(booleanStr));
}

Ergebnis:

Str =N: boolean =false
Str =Yes: boolean =true
Str =YES: boolean =true
Str =yes: boolean =true
Str =no: boolean =false
Str =No: boolean =false
Str =NO: boolean =false
Str =true: boolean =true
Str =false: boolean =false
Str =True: boolean =true
Str =False: boolean =false
Str =TRUE: boolean =true
Str =FALSE: boolean =false
Str =null: boolean =false
2
Dhana

So habe ich es gemacht:

"1##true".contains( string )

Für meinen Fall ist meist entweder 1 oder wahr. Ich benutze Hashes als Teiler.

0
Tomislav Boras

Warum nicht einen regulären Ausdruck verwenden?

public static boolean toBoolean( String target )
{
    if( target == null ) return false;
    return target.matches( "(?i:^(1|true|yes|oui|vrai|y)$)" );
}
0
Christophe

Wir haben die Bibliothek soyuz-to erstellt, um dieses Problem zu vereinfachen (X in Y konvertieren). Es sind nur eine Reihe von SO Antworten auf ähnliche Fragen. Es mag seltsam sein, die Bibliothek für ein so einfaches Problem zu verwenden, aber es hilft in vielen ähnlichen Fällen wirklich.

import io.thedocs.soyuz.to;

Boolean aBoolean = to.Boolean("true");

Bitte überprüfen Sie es - es ist sehr einfach und hat viele andere nützliche Funktionen

0
fedor.belov

Versuchen Sie Folgendes, um den booleschen Wert eines Strings zu ermitteln:

public boolean toBoolean(String s) {
    try {
        return Boolean.parseBoolean(s); // Successfully converted String to boolean
    } catch(Exception e) {
        return null; // There was some error, so return null.
    }
}

Wenn ein Fehler auftritt, wird null zurückgegeben. Beispiel:

toBoolean("true"); // Returns true
toBoolean("tr.u;e"); // Returns null
0
user5162630