Como converter String
objeto em Boolean
objeto?
Como converter String
objeto em Boolean
objeto?
Respostas:
Tente (dependendo do tipo de resultado desejado):
Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");
Vantagem:
Boolean.TRUE
ou de Boolean.FALSE
.A documentação oficial está no Javadoc .
ATUALIZADA:
A autoboxing também pode ser usada, mas tem um custo de desempenho.
Sugiro usá-lo apenas quando você tiver que se lançar, não quando o elenco for evitável.
boolean boolean2 = Boolean.valueOf("true");
Você precisa ter cuidado ao usar Boolean.valueOf (string) ou Boolean.parseBoolean (string) . A razão para isso é que os métodos sempre retornarão false se a String não for igual a "true" (o caso é ignorado).
Por exemplo:
Boolean.valueOf("YES") -> false
Devido a esse comportamento, eu recomendaria adicionar algum mecanismo para garantir que a string que deveria ser convertida em um booleano siga um formato especificado.
Por exemplo:
if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
Boolean.valueOf(string)
// do something
} else {
// throw some exception
}
Além da excelente resposta do KLE, também podemos tornar algo mais flexível:
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 na resposta de zlajo ... :-))
Bem, como agora em janeiro de 2018, a melhor maneira disso é usar o apache BooleanUtils.toBoolean
.
Isso converterá qualquer string booleana como em booleana, por exemplo, Y, sim, verdadeiro, N, não, falso, etc.
Realmente útil!
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.");
}
Minha maneira de converter string para 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));
}
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
Foi assim que eu fiz:
"1##true".contains( string )
Para o meu caso é principalmente 1 ou verdadeiro. Eu uso hashes como divisores.
Para obter o valor booleano de uma String, tente o seguinte:
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 houver um erro, ele retornará nulo. Exemplo:
toBoolean("true"); // Returns true
toBoolean("tr.u;e"); // Returns null
parseBoolean(String s)
não lança uma exceção, de acordo com o Javadoc.
Por que não usar uma expressão regular?
public static boolean toBoolean( String target )
{
if( target == null ) return false;
return target.matches( "(?i:^(1|true|yes|oui|vrai|y)$)" );
}
Criamos a biblioteca soyuz-to para simplificar esse problema (converter X em Y). É apenas um conjunto de respostas SO para perguntas semelhantes. Pode ser estranho usar a biblioteca para um problema tão simples, mas realmente ajuda em muitos casos semelhantes.
import io.thedocs.soyuz.to;
Boolean aBoolean = to.Boolean("true");
Verifique - é muito simples e tem muitos outros recursos úteis
Visite http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx
Isso lhe dará uma idéia do que fazer.
É isso que recebo da documentação Java :
Detalhe do método
parseBoolean
public static boolean parseBoolean(String s)
Analisa o argumento da string como um booleano. O valor booleano retornado representa o valor true se o argumento da string não
null
for e for igual, ignorando maiúsculas e minúsculas, à string "true
".Parâmetros:
s
- a String que contém a representação booleana a ser analisadaRetorna: o booleano representado pelo argumento string
Desde: 1.5
você pode definir diretamente o valor booleano equivalente a qualquer string pela classe System e acessá-lo em qualquer 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