Comment convertir un object Ssortingng en object booléen?

Comment convertir un object Ssortingng object Boolean ?

Essayez (selon quel type de résultat vous voulez):

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

Avantage:

  • Booléen: cela ne crée pas de nouvelles instances de booléen, donc les performances sont meilleures (et moins la récupération de place). Il réutilise les deux instances de Boolean.TRUE ou Boolean.FALSE .
  • booléen: aucune instance n’est nécessaire, vous utilisez le type primitif.

La documentation officielle est dans le Javadoc .


ACTUALISÉ:

L’autoboxing pourrait également être utilisé, mais il a un coût de performance.
Je suggère de l’utiliser uniquement lorsque vous devez vous lancer, pas quand la dissortingbution est évitable.

Vous devez faire attention lorsque vous utilisez Boolean.valueOf (ssortingng) ou Boolean.parseBoolean (ssortingng) . La raison en est que les méthodes retourneront toujours false si la chaîne n’est pas égale à “true” (la casse est ignorée).

Par exemple:

 Boolean.valueOf("YES") -> false 

En raison de ce comportement, je recommande d’append un mécanisme pour garantir que la chaîne à traduire en booléen respecte un format spécifié.

Par exemple:

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

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 faire quelque chose de plus flexible:

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

(inspiré par la réponse de zlajo … :-))

 boolean b = ssortingng.equalsIgnoreCase("true"); 

Eh bien, comme maintenant en janvier 2018, la meilleure façon d’y parvenir est d’utiliser BooleanUtils.toBoolean d’ BooleanUtils.toBoolean .

Cela convertira n’importe quelle chaîne booléenne en booléen, par exemple, Y, oui, vrai, N, non, faux, etc.

Vraiment pratique!

 public static boolean ssortingngToBool(Ssortingng s) { s = s.toLowerCase(); Set trueSet = new HashSet(Arrays.asList("1", "true", "yes")); Set falseSet = new HashSet(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.

 Ssortingng[] values= new Ssortingng[]{"y","Y","n","N","Yes","YES","yes","no","No","NO","true","false","True","False","TRUE","FALSE",null}; for(Ssortingng 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 

Pour obtenir la valeur booléenne d’une chaîne, essayez ceci:

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

S’il y a une erreur, elle retournera null. Exemple:

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

C’est comme ça que je l’ai fait:

"1##true".contains( ssortingng )

Pour mon cas, c’est surtout 1 ou vrai. J’utilise des hashes comme séparateurs.

Pourquoi ne pas utiliser une expression régulière?

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

Visitez http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx

Cela vous donnera une idée de ce qu’il faut faire.

Voici ce que j’obtiens de la documentation Java :

Détail de la méthode

parseBoolean

public static boolean parseBoolean(Ssortingng s)

Analyse l’argument de chaîne en tant que booléen. Le booléen renvoyé représente la valeur true si l’argument de chaîne n’est pas null et est égal, en ignorant la casse, à la chaîne ” true “.

Paramètres:

s – la chaîne contenant la représentation booléenne à parsingr

Retourne: le booléen représenté par l’argument chaîne

Depuis: 1.5

vous pouvez directement définir une valeur booléenne équivalente à n’importe quelle chaîne par classe de système et y accéder n’importe où.

 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