Como converter um objeto String em Boolean Object?


Respostas:


516

Tente (dependendo do tipo de resultado desejado):

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

Vantagem:

  • Booleano: isso não cria novas instâncias do booleano, portanto, o desempenho é melhor (e menos coleta de lixo). Reutiliza as duas instâncias de um Boolean.TRUEou de Boolean.FALSE.
  • booleano: nenhuma instância é necessária, você usa o tipo primitivo.

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.


1
a atribuição de Boolean.valueOf a boolaen2 seria desmarcada automaticamente? Não estou vendo a diferença de analisar booleano aqui.
Alex Feinman

9
O maior problema é que o booleano não irá exceção quando vir algo que não deve aceitar. Ele retornará true para qualquer coisa que veja como "true" e retornará false para todo o resto . Se você estiver tentando aplicar a correspondência de uma sequência com um valor booleano apropriado, precisará adicionar lógica extra para capturar casos ilegais manualmente.
precisa saber é o seguinte

e se eu usar #boolean boolean2 = Boolean.valueOf("true");
21813 vipin8169

1
se o objeto String for nulo, o Boolean.valueOf (String) retornará false. Mas o Boolean também pode conter um valor nulo. Você pode fornecer qualquer ajuda para isso.
Amit kate

90

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
}

9
Este é o melhor exemplo que eu já vi e o que deveria ter sido implementado no tipo booleano para começar. Lançar uma exceção para um valor booleano inválido é importante para muitos aplicativos.
precisa saber é o seguinte

2
Não, isso não é totalmente verdade. aqui está a implementação subjacente do parseBoolean público estático booleano parseBoolean (String s) {return ((s! = null) && s.equalsIgnoreCase ("true")); }
electricalbah

Heh ... Se você precisar escrever esse código, não precisará chamar Boolean.valueOf. Em vez disso você pode reestruturar simples esta declaração se por isso vai fazer o que quiser ;-)

22
Boolean b = Boolean.valueOf(string);

O valor de bé verdadeiro se a sequência não for nula e igual a true(ignorando maiúsculas e minúsculas).


17

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 ... :-))


11
boolean b = string.equalsIgnoreCase("true");

9

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!


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


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

O que é o BooleanUtils?
James.garriss

1
org.apache.commons.lang3.BooleanUtils é do Apache commons Lang API.
Dhana 29/11

mais pelos esforços em reunir todos os casos de uso.
gaurav

1

Foi assim que eu fiz:

"1##true".contains( string )

Para o meu caso é principalmente 1 ou verdadeiro. Eu uso hashes como divisores.


0

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

5
Você já tentou isso? :) parseBoolean(String s)não lança uma exceção, de acordo com o Javadoc.
24515

0

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

0

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


-3

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 nullfor 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 analisada

Retorna: o booleano representado pelo argumento string

Desde: 1.5


1
Embora o texto da pergunta não seja explícito, esta é uma pergunta sobre Java. Pelo menos está marcado dessa maneira. Esta resposta pode confundir as pessoas.
Paulo.albuquerque

-3

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

1
Esta é uma proposta muito hacky de converter uma String em um booleano e simplesmente não faz sentido.
saw303
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.