Как преобразовать объект String в Boolean Object?

Как преобразовать объект String в объект Boolean?

Ответ 1

Попробуйте (в зависимости от того, какой тип результата вы хотите):

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

Преимущество:

  • Boolean: это не создает новые экземпляры Boolean, поэтому производительность лучше (и меньше сбор мусора). Он повторно использует два экземпляра либо Boolean.TRUE, либо Boolean.FALSE.
  • boolean: экземпляр не нужен, вы используете примитивный тип.

Официальная документация находится в Javadoc.


ОБНОВЛЕНО:

Автобоксирование также может быть использовано, но оно имеет производительность.
Я предлагаю использовать его только тогда, когда вам придется бросать себя, а не когда бросок можно избежать.

Ответ 2

Вы должны быть осторожны при использовании Boolean.valueOf(string) или Boolean.parseBoolean(string). Причина этого в том, что методы всегда будут возвращать false, если строка не равна "true" (случай игнорируется).

Например:

Boolean.valueOf("YES") -> false

Из-за этого поведения я бы рекомендовал добавить некоторый механизм, гарантирующий, что строка, которая должна быть переведена в логическое, следует за указанным форматом.

Например:

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

Ответ 3

Boolean b = Boolean.valueOf(string);

Значение b истинно, если строка не равна нулю и равна true (игнорируя случай).

Ответ 4

Помимо превосходного ответа KLE, мы также можем сделать что-то более гибкое:

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

(вдохновленный zlajo ответить...: -))

Ответ 5

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

Ответ 6

Что ж, как и сейчас, в январе 2018 года, лучший способ для этого - использовать apache BooleanUtils.toBoolean.

Это преобразует любую логическую строку в логическую, например, Да, да, нет, нет, ложь и т.д.

Действительно удобно!

Ответ 7

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

Мой способ конвертировать строку в boolean.

Ответ 8

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

Результат:

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

Ответ 9

Вот как я это сделал:

"1##true".contains( string )

Для моего дела в основном 1 или true. Я использую хеши как разделители.

Ответ 10

Чтобы получить логическое значение String, попробуйте следующее:

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

Если произошла ошибка, она вернет значение null. Пример:

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

Ответ 11

Почему бы не использовать регулярное выражение?

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

Ответ 12

Мы создали библиотеку soyuz-to, чтобы упростить эту проблему (конвертировать X в Y). Это просто набор SO ответов на подобные вопросы. Может быть странно использовать библиотеку для такой простой задачи, но она действительно помогает во многих подобных случаях.

import io.thedocs.soyuz.to;

Boolean aBoolean = to.Boolean("true");

Пожалуйста, проверьте это - это очень просто и имеет много других полезных функций

Ответ 13

Посетите http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx

Это даст вам представление о том, что делать.

Это то, что я получаю из документации Java:

Подробное описание метода

parseBoolean

public static boolean parseBoolean(String s)

Разбирает строковый аргумент как логическое. Возвращаемое значение boolean представляет значение true, если строковый аргумент не null и равен, игнорируя регистр, строке "true".

Параметры:

s - Строка, содержащая логическое представление, подлежащее анализу

Возвращает: логическое значение, представленное аргументом string

С:1.5

Ответ 14

вы можете напрямую установить логическое значение, эквивалентное любой строке, по классу System и получить к нему доступ в любом месте..

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