2009-10-08 20 views

Respuesta

416

Try (dependiendo de qué tipo de resultado que desea):

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

Ventaja:

  • de Boole: esto no crea nuevas instancias de Boole, por lo que el rendimiento es mejor (y menos basura- colección). Reutiliza las dos instancias de Boolean.TRUE o Boolean.FALSE.
  • booleano: no se necesita ninguna instancia, utiliza el tipo primitivo.

La documentación oficial está en el Javadoc.


ACTUALIZADO:

Autoboxing también podrían utilizarse, pero tiene un costo de rendimiento.
Sugiero usarlo solo cuando tenga que lanzarse, no cuando el lanzamiento sea evitable.

+0

no asignaría Boolean.valueOf a boolaen2 ¿se auto-unboxed de todos modos? No estoy viendo la diferencia para analizar aquí Boolean. –

+6

El mayor problema es que Boolean no se extrañará cuando vea algo que no debería aceptar. Volverá verdadero para todo lo que ve como "verdadero" y devolverá falso para * todo lo demás *. Si intentas hacer coincidir una cadena con un valor booleano apropiado, tendrás que agregar lógica extra para atrapar casos ilegales manualmente. –

+0

¿qué ocurre si utilizo 'boolean boolean2 = Boolean.valueOf (" true ");' – vipin8169

18
Boolean b = Boolean.valueOf(string); 

El valor de b es cierto si la cadena no es un nulo e igual a true (caso ignorando).

77

Usted tiene que tener cuidado al usar Boolean.valueOf (cadena) oBoolean.parseBoolean (cadena). La razón de esto es que los métodos siempre devolverán false si el String no es igual a "verdadero" (el caso se ignora).

Por ejemplo:

Boolean.valueOf("YES") -> false 

Debido a que el comportamiento recomendaría añadir algún mecanismo para asegurar que la cadena que debe ser traducido a un booleano sigue un formato especificado.

Por ejemplo:

if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) { 
    Boolean.valueOf(string) 
    // do something 
} else { 
    // throw some exception 
} 
+7

Este es el mejor ejemplo que he visto y lo que debería haberse implementado en el tipo booleano para empezar. Lanzar una excepción para un valor booleano no válido es importante para muchas aplicaciones. –

+1

No, eso no es totalmente cierto. aquí está la implementación subyacente de parseBoolean public static boolean parseBoolean (String s) { return ((s! = Null) && s.equalsIgnoreCase ("true")); } – electricalbah

18

Junto a la excelente respuesta de la demandante, también podemos hacer algo más 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"); 

(inspirado por la respuesta de zlajo ... :-))

10
boolean b = string.equalsIgnoreCase("true"); 
-3

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

Esto le dará una idea de qué hacer.

Esto es lo que recibo de la Java documentation:

Información sobre métodos

parseBoolean

public static boolean parseBoolean(String s)

analiza el argumento de cadena como un valor lógico. El booleano devuelto representa el valor verdadero si el argumento de cadena no es null y es igual, ignorando el caso, a la cadena "true".

Parámetros:

s - la cadena que contiene la representación booleana a ser analizada

Devuelve: el booleano representado por el argumento de cadena

desde: 1,5

+1

Aunque el texto de la pregunta no es explícito, esta es una pregunta sobre Java. Al menos está etiquetado de esa manera. Esta respuesta puede confundir a las personas. –

0

Esto es cómo lo hice:

"1##true".contains(string)

Para mi caso es en su mayoría ya sea 1 o verdadero. Yo uso hashes como divisores.

-2

puede establecer directamente un valor equivalente booleano para cualquier cadena por clase de sistema y acceder a ella en cualquier lugar ..

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 
2

para obtener el valor booleano de una cadena, intente esto:

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. 
    } 
} 

Si hay un error, devolverá nulo. Ejemplo:

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

¿Has probado esto? :) 'parseBoolean (String s)' no arroja una excepción, según el Javadoc. – rapt

3
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."); 
    } 

Mi manera de convertir la cadena a Boole.

3
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)); 
} 

Resultado:

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 
+0

¿Qué es BooleanUtils? –

+0

org.apache.commons.lang3.BooleanUtils es de Apache commons Lang API. – Dhana

0

por qué no utilizar una expresión regular?

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

Bueno, como ya en enero de 2018, de la mejor manera para ello es utilizar Apache de BooleanUtils.toBoolean.

Esto convertirá cualquier booleano como cadena a booleano, p. S, sí, verdadero, N, no, falso, etc.

¡Muy práctico!

Cuestiones relacionadas