Как преобразовать объект String
в объект Boolean
?
Попробуйте (в зависимости от того, какой тип результата вы хотите получить):
Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");
Преимущество:
Boolean.TRUE
или Boolean.FALSE
.Официальная документация находится в Javadoc.
UPDATED:
Автобоксинг также может быть использован, но он имеет стоимость производительности.
Я предлагаю использовать его только в тех случаях, когда вам пришлось бы бросать самому, а не когда броска можно избежать.
Вы должны быть осторожны при использовании Boolean.valueOf(string) или Boolean.parseBoolean(string). Причина в том, что эти методы всегда возвращают false, если String не равен "true" (регистр игнорируется).
Например:
Boolean.valueOf("YES") -> false
Из-за такого поведения я бы рекомендовал добавить некоторый механизм для обеспечения того, чтобы строка, которая должна быть переведена в булево значение, соответствовала заданному формату.
Например:
if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
Boolean.valueOf(string)
// do something
} else {
// throw some exception
}
Boolean b = Boolean.valueOf(string);
Значение b
истинно, если строка не является нулем и равна true
(игнорируя регистр).
Рядом с выбором ответа из Кле, мы также можем сделать что-то более гибким:
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'ы ответ... :-))
Ну, а сейчас, в январе, 2018, лучшим способом для этого является использование Apache'ы BooleanUtils.toBoolean
.
Это будет конвертировать любую булеву как строка, булево, например, Г, Да, верно, нет, нет, ложь, и т. д.
Очень удобно!
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.");
}
Мой способ преобразовать строку в логическое.
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
Мы создали [союз-к](https://github.com/thedocs-io/soyuz-to библиотека) для упрощения этой задачи (преобразования X в y). Это's просто так отвечает на подобные вопросы. Это может быть странным, чтобы использовать библиотеку для такой простой задачи, но это действительно помогает во многих подобных случаях.
`` импорт Ио.thedocs.Союз.к;
Логическое aBoolean = для.Логическое (на"Правда и"); ``
Пожалуйста, проверьте его - он's очень прост и имеет много других полезных функций
Это, как я сделал это:
в "1##верно и".содержит( строка )
В моем случае это в основном либо 1 или True. Я использовать хэши в качестве делителей.
Чтобы получить логическое значение строки, попробуйте это:
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
Почему бы не использовать регулярные выражения ?
public static boolean toBoolean( String target )
{
if( target == null ) return false;
return target.matches( "(?i:^(1|true|yes|oui|vrai|y)$)" );
}
вы можете непосредственно установить логическое значение эквивалентно любую строку системы класса и открыть его в любом месте..
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
Визит http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx
Это даст вам представление о том, что делать.
Вот что я получил от на Java documentation:
деталь способ
parseBoolean
публичный статический логический parseBoolean(строка s)
анализирует строковый параметр как логическое. Логическое соответствует значение true, если строковый параметр не null и равняется, игнорируя регистр, к строке на " истину" и.
параметры:
ы
- строка, содержащая логическое представление, которое будет проанализировано
возвращает: логическое представляется строковым параметром
С: 1.5