Comment convertir un objet String
en un objet Boolean
?
Essayez (en fonction du type de résultat souhaité):
Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");
Avantage:
Boolean.TRUE
ou Boolean.FALSE
.La documentation officielle est dans le Javadoc .
MIS À JOUR:
La substitution automatique pourrait également être utilisée, mais elle a un coût de performance.
Je suggère de l’utiliser uniquement lorsque vous devez vous lancer vous-même, et non lorsque le casting est évitable.
Vous devez être prudent lorsque vous utilisez Boolean.valueOf (chaîne) ou Boolean.parseBoolean (chaîne). La raison en est que les méthodes renverront toujours false si String n'est pas égal à "true" (la casse est ignorée).
Par exemple:
Boolean.valueOf("YES") -> false
En raison de ce comportement, je recommanderais d'ajouter un mécanisme pour s'assurer que la chaîne qui doit être traduite en un booléen suit un format spécifié.
Par exemple:
if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
Boolean.valueOf(string)
// do something
} else {
// throw some exception
}
Boolean b = Boolean.valueOf(string);
La valeur de b
est vraie si la chaîne n'est pas nulle et égale à true
(en ignorant la casse).
Outre l'excellente réponse de KLE, nous pouvons également apporter quelque chose de plus flexible:
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");
(inspiré par la réponse de zlajo ... :-))
boolean b = string.equalsIgnoreCase("true");
Comme en janvier 2018, la meilleure façon de procéder consiste à utiliser le BooleanUtils.toBoolean
d'Apache.
Cela convertira n'importe quel booléen tel que string en boolean, par exemple. Oui, vrai, N, non, faux, etc.
Vraiment pratique!
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.");
}
Ma façon de convertir une chaîne en booléen.
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));
}
Résultat:
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
Voici comment je l'ai fait:
"1##true".contains( string )
Pour mon cas, c'est principalement 1 ou vrai. J'utilise des hachages comme séparateurs.
Pourquoi ne pas utiliser une expression régulière?
public static boolean toBoolean( String target )
{
if( target == null ) return false;
return target.matches( "(?i:^(1|true|yes|oui|vrai|y)$)" );
}
Nous avons créé la bibliothèque soyuz-to pour simplifier ce problème (convertir X en Y). C'est juste un ensemble de SO réponses à des questions similaires. Cela peut paraître étrange d’utiliser la bibliothèque pour un problème aussi simple, mais cela aide vraiment dans beaucoup de cas similaires.
import io.thedocs.soyuz.to;
Boolean aBoolean = to.Boolean("true");
S'il vous plaît vérifier - c'est très simple et a beaucoup d'autres fonctionnalités utiles
Pour obtenir la valeur booléenne d'une chaîne, essayez ceci:
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.
}
}
S'il y a une erreur, il retournera null. Exemple:
toBoolean("true"); // Returns true
toBoolean("tr.u;e"); // Returns null