Comment convertir les objets String
en Boolean
objet?Comment convertir un objet String en objet booléen?
Répondre
Essayez (selon le type résultat que vous voulez):
Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");
Avantage:
- Boolean: cela ne crée pas de nouvelles instances de Boolean, si la performance est meilleure (et moins garbage- collection). Il réutilise les deux instances de
Boolean.TRUE
ou deBoolean.FALSE
. - booléen: aucune instance n'est nécessaire, vous utilisez le type primitif.
La documentation officielle se trouve dans le Javadoc.
MISE À JOUR:
Autoboxing pourrait aussi être utilisé, mais il a un coût de performance.
Je suggère de ne l'utiliser que lorsque vous devez vous lancer, pas lorsque le plâtre est évitable.
n'attribuerait pas Boolean.valueOf à boolaen2 être auto-déballé de toute façon? Je ne vois pas la différence avec parseBoolean ici. –
Le plus gros problème est que Boolean n'échappera pas quand il voit quelque chose qu'il ne devrait pas accepter. Il retournera vrai pour tout ce qu'il voit comme "vrai" et retournera faux pour * tout le reste *. Si vous essayez de faire correspondre une chaîne à une valeur booléenne appropriée, vous devrez ajouter une logique supplémentaire pour capturer les cas illégaux manuellement. –
et si j'utilise 'boolean boolean2 = Boolean.valueOf (" true ");' – vipin8169
Boolean b = Boolean.valueOf(string);
La valeur de b
est vrai si la chaîne est un pas nul et égal à true
(en ignorant cas).
Vous devez être prudent lors de l'utilisation Boolean.valueOf (string) ou Boolean.parseBoolean (string). La raison en est que les méthodes retourneront toujours false si la chaîne n'est pas égale à "vrai" (le cas est ignoré).
Par exemple:
Boolean.valueOf("YES") -> false
En raison de ce comportement, je recommande d'ajouter un mécanisme pour faire en sorte que la chaîne qui devrait être traduit en une valeur booléenne suit un format spécifié.
Par exemple:
if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
Boolean.valueOf(string)
// do something
} else {
// throw some exception
}
C'est le meilleur exemple que j'ai vu et ce qui aurait dû être implémenté dans le type booléen pour commencer. Le lancement d'une exception pour une valeur booléenne non valide est important pour de nombreuses applications. –
Non ce n'est pas totalement vrai. Voici l'implémentation sous-jacente de parseBoolean public static boolean parseBoolean (Chaînes s) { return ((s! = Null) && s.equalsIgnoreCase ("true")); } – electricalbah
Outre l'excellente réponse de KLE, nous pouvons aussi faire quelque chose de plus souple:
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");
Visitez http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx
Cela vous donnera une idée de ce qu'il faut faire.
C'est ce que je reçois de la Java documentation:
Méthode Détail
parseBoolean
public static boolean parseBoolean(String s)
parse l'argument de chaîne comme un booléen. Le booléen retourné représente la valeur true si l'argument de la chaîne n'est pas
null
et est égal, en ignorant le cas, à la chaîne "true
".Paramètres:
s
- la chaîne contenant la représentation booléenne à analyserRenvoie: le booléen représenté par l'argument de chaîne
depuis: 1,5
Bien que le texte de la question ne soit pas explicite, il s'agit d'une question sur Java. Au moins, c'est étiqueté de cette façon. Cette réponse peut embrouiller les gens. –
Voici comment je l'ai fait:
"1##true".contains(string)
Pour mon cas est la plupart du temps 1 ou vrai. J'utilise des hachages comme diviseurs.
vous pouvez régler directement équivalent valeur booléenne à une chaîne par classe système et l'accès partout ..
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
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
Avez-vous essayé? :) 'parseBoolean (String s)' ne lance pas d'exception, selon Javadoc. – rapt
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 la 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
Qu'est-ce que BooleanUtils? –
org.apache.commons.lang3.BooleanUtils provient de Apache commons Lang API. – Dhana
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)$)");
}
Eh bien, comme maintenant janvier 2018, la meilleure façon pour cela est d'utiliser BooleanUtils.toBoolean
de apache.
Cela convertira toute chaîne de type booléen en valeur booléenne, par ex. Y, oui, vrai, N, non, faux, etc.
Très pratique!
Quelle est la valeur de la chaîne? –
Quelle est votre attente de la façon dont une chaîne devrait être convertie en un booléen? –
myvartypeboolean = !! valuetoconvert –