Come convertire String
oggetto in Boolean
oggetto?
Come convertire String
oggetto in Boolean
oggetto?
Risposte:
Prova (a seconda del tipo di risultato desiderato):
Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");
Vantaggio:
Boolean.TRUE
o Boolean.FALSE
.La documentazione ufficiale è nel Javadoc .
AGGIORNAMENTO:
È possibile utilizzare anche il box automatico, ma ha un costo in termini di prestazioni.
Suggerisco di usarlo solo quando dovresti lanciarti, non quando il cast è evitabile.
boolean boolean2 = Boolean.valueOf("true");
Devi stare attento quando usi Boolean.valueOf (stringa) o Boolean.parseBoolean (stringa) . La ragione di ciò è che i metodi restituiranno sempre false se la stringa non è uguale a "true" (il caso viene ignorato).
Per esempio:
Boolean.valueOf("YES") -> false
A causa di questo comportamento, consiglierei di aggiungere un meccanismo per garantire che la stringa che dovrebbe essere tradotta in un booleano segua un formato specificato.
Per esempio:
if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
Boolean.valueOf(string)
// do something
} else {
// throw some exception
}
Oltre all'eccellente risposta di KLE, possiamo anche rendere qualcosa di più flessibile:
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");
(ispirato alla risposta di zlajo ... :-))
Bene, come ora a gennaio 2018, il modo migliore per farlo è usare Apache BooleanUtils.toBoolean
.
Questo convertirà qualsiasi stringa booleana come booleana, ad esempio Y, sì, vero, N, no, falso, ecc.
Davvero utile!
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.");
}
Il mio modo di convertire la stringa in booleano.
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));
}
Risultato:
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
Ecco come l'ho fatto:
"1##true".contains( string )
Per il mio caso è principalmente 1 o vero. Uso gli hash come divisori.
Per ottenere il valore booleano di una stringa, prova questo:
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.
}
}
Se si verifica un errore, verrà restituito null. Esempio:
toBoolean("true"); // Returns true
toBoolean("tr.u;e"); // Returns null
parseBoolean(String s)
non genera un'eccezione, secondo Javadoc.
Perché non usare un'espressione regolare?
public static boolean toBoolean( String target )
{
if( target == null ) return false;
return target.matches( "(?i:^(1|true|yes|oui|vrai|y)$)" );
}
Abbiamo creato la libreria soyuz-to per semplificare questo problema (convertire X in Y). È solo una serie di risposte SO per domande simili. Potrebbe essere strano usare la libreria per un problema così semplice, ma aiuta davvero in molti casi simili.
import io.thedocs.soyuz.to;
Boolean aBoolean = to.Boolean("true");
Si prega di controllare - è molto semplice e ha molte altre utili funzioni
Visita http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx
Questo ti darà un'idea di cosa fare.
Questo è ciò che ottengo dalla documentazione Java :
Dettaglio del metodo
parseBoolean
public static boolean parseBoolean(String s)
Analizza l'argomento stringa come un valore booleano. Il valore booleano restituito rappresenta il valore vero se l'argomento stringa non
null
è ed è uguale, ignorando il caso, alla stringa "true
".parametri:
s
- la stringa contenente la rappresentazione booleana da analizzareRestituisce: il valore booleano rappresentato dall'argomento stringa
Dal: 1.5
puoi impostare direttamente un valore booleano equivalente a qualsiasi stringa per classe di sistema e accedervi ovunque ..
System.setProperty("n","false");
System.setProperty("y","true");
System.setProperty("yes","true");
System.setProperty("no","false");
System.out.println(Boolean.getBoolean("n")); //false
System.out.println(Boolean.getBoolean("y")); //true
System.out.println(Boolean.getBoolean("no")); //false
System.out.println(Boolean.getBoolean("yes")); //true