Як перетворити String
об'єкт в Boolean
об’єкт?
Як перетворити String
об'єкт в Boolean
об’єкт?
Відповіді:
Спробуйте (залежно від типу типу результату):
Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");
Перевага:
Boolean.TRUE
або Boolean.FALSE
.Офіційна документація знаходиться в Javadoc .
ОНОВЛЕНО:
Автобоксинг також можна використовувати, але він має вартість продуктивності.
Я пропоную використовувати його лише тоді, коли вам доведеться відігравати себе, а не тоді, коли акторський склад можна уникнути.
boolean boolean2 = Boolean.valueOf("true");
Ви повинні бути обережними при використанні Boolean.valueOf (string) або Boolean.parseBoolean (string) . Причиною цього є те, що методи завжди повертаються помилковими, якщо String не дорівнює "true" (випадок ігнорується).
Наприклад:
Boolean.valueOf("YES") -> false
Через таку поведінку я рекомендую додати якийсь механізм, щоб переконати, що рядок, який повинен бути переведений в булевий формат, відповідає заданому формату.
Наприклад:
if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
Boolean.valueOf(string)
// do something
} else {
// throw some exception
}
Окрім чудової відповіді 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");
(натхненний відповіддю зладжо ... :-))
Що ж, як і в січні 2018 року, найкращий спосіб для цього - використовувати апаші BooleanUtils.toBoolean
.
Це перетворить будь-яке булеве, як рядок, булеве, наприклад, Y, так, true, N, no, false і т.д.
Дійсно зручно!
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
Ось як я це зробив:
"1##true".contains( string )
Для мого випадку це здебільшого або 1, або правда. Я використовую хеші як роздільники.
Щоб отримати булеве значення рядка, спробуйте:
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.
}
}
Якщо виникла помилка, вона повернеться до нуля. Приклад:
toBoolean("true"); // Returns true
toBoolean("tr.u;e"); // Returns null
parseBoolean(String s)
не кидає винятку, на думку Javadoc.
Чому б не використовувати регулярний вираз?
public static boolean toBoolean( String target )
{
if( target == null ) return false;
return target.matches( "(?i:^(1|true|yes|oui|vrai|y)$)" );
}
Ми створили бібліотеку soyuz-to, щоб спростити цю проблему (перетворити X в Y). Це лише набір відповідей на подібні запитання. Це може бути дивно використовувати бібліотеку для такої простої проблеми, але це справді допомагає у багатьох подібних випадках.
import io.thedocs.soyuz.to;
Boolean aBoolean = to.Boolean("true");
Перевірте це - це дуже просто і має безліч інших корисних функцій
Відвідайте http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx
Це дасть вам уявлення про те, що робити.
Ось що я отримую з документації на Java :
Деталізація методу
parseBoolean
public static boolean parseBoolean(String s)
Розбирає аргумент рядка як булевий. Повернене булеве значення представляє значення true, якщо аргумент рядка не
null
є і рівний, ігноруючи регістр, рядку "true
".Параметри:
s
- Рядок, що містить булеве представлення для розборуПовертає: булів, представлений аргументом рядка
Оскільки: 1.5
Ви можете безпосередньо встановити булеве значення, еквівалентне будь-якому рядку класом 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