Подтвердить что ты не робот

Как проверить, является ли String значением типа Boolean в Java?

Я сделал небольшой поиск по этому вопросу, но не нашел ничего полезного.

Точка заключается в том, что если значение String равно "true" или "false", возвращаемое значение должно быть истинным. В любом другом значении оно должно быть ложным.

Я пробовал:

String value = "false";
System.out.println("test1: " + Boolean.parseBoolean(value));
System.out.println("test2: " + Boolean.valueOf(value));
System.out.println("test3: " + Boolean.getBoolean(value));

Все функции возвращены false: (

4b9b3361

Ответ 1

  • parseBoolean (String) возвращает true, если String (без учета регистра) "true", в противном случае false
  • valueOf (String) ditto возвращает канонические логические объекты
  • getBoolean (String) - красная селедка; он извлекает свойство System данного имени и сравнивает его с "истинным"

Не существует способа проверить, кодирует ли String логическое; для всех практических эффектов любая не-истинная -String является "ложной".

Ответ 2

return "true".equals(value) || "false".equals(value);

Ответ 3

Apache commons-lang3 имеет BooleanUtils с методом toBooleanObject:

BooleanUtils.toBooleanObject(String str)

// where: 

BooleanUtils.toBooleanObject(null)    = null
BooleanUtils.toBooleanObject("true")  = Boolean.TRUE
BooleanUtils.toBooleanObject("false") = Boolean.FALSE
BooleanUtils.toBooleanObject("on")    = Boolean.TRUE
BooleanUtils.toBooleanObject("ON")    = Boolean.TRUE
BooleanUtils.toBooleanObject("off")   = Boolean.FALSE
BooleanUtils.toBooleanObject("oFf")   = Boolean.FALSE
BooleanUtils.toBooleanObject("blue")  = null

Ответ 4

if ("true".equals(value) || "false".equals(value)) {
  // do something
} else {
  // do something else
}

Ответ 5

Методы, вызываемые классом Boolean, не проверяют, содержит ли строка допустимое логическое значение, но они возвращают логическое значение, представляющее содержимое строки: поместите "true" в строку, они return true, поместите "false" в строку, они возвращают false.

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

Оберните это в методе ContainsBoolString, и вы идете.

ИЗМЕНИТЬ
Кстати, в С# существуют такие методы, как bool Int32.TryParse(string x, out int i), которые выполняют проверку, может ли контент быть проанализирован, а затем возвращать результат анализа.

int i;
if (Int32.TryParse("Hello", out i))
  // Hello is an int and its value is in i
else
  // Hello is not an int

Тесты показывают, что они быстрее, чем следующие:

int i;
try
{
   i = Int32.Parse("Hello");
   // Hello is an int and its value is in i
}
catch
{
   // Hello is not an int
}

Возможно, есть похожие методы в Java? Прошло некоторое время с тех пор, как я использовал Java...

Ответ 6

Можно также сделать это с помощью регулярного выражения:

Pattern queryLangPattern = Pattern.compile("true|false", Pattern.CASE_INSENSITIVE);
Matcher matcher = queryLangPattern.matcher(booleanParam);
return matcher.matches();

Ответ 7

Собственно, проверка булевского типа в String (который является типом) невозможна. В основном вы спрашиваете, как выполнить "сравнение строк".

Как и другие. Вам нужно определить, когда вы хотите вернуть "true" или "false" (при каких условиях). Вы хотите, чтобы это был случай (в) чувствительный? Что делать, если значение равно null?

Я думаю, что Boolean.valueOf() - ваш друг, javadoc говорит:

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

Пример: Boolean.valueOf( "True" ) возвращает true.
Пример: Boolean.valueOf(" yes") возвращает false.

Ответ 8

String value = "True";
boolean result = value.equalsIgnoreCase("true") ? true : false;

Ответ 9

Да, но разве вы не разобрали "ложь"? Если вы проанализируете "истина", то они вернутся к истине.

Возможно, есть недоразумение: методы не проверяются, если содержимое String представляет собой логическое значение, они оценивают содержимое String для boolean.

Ответ 10

Хорошо для этого, также посмотрите на org.apache.commons.lang.BooleanUtils # toBoolean (java.lang.String), а также множество других полезных функций.

Ответ 11

return value.equals("false") || value.equals("true");

Ответ 12

То, что вы также должны принять во внимание, это обложка символов...

Вместо:

return value.equals("false") || value.equals("true");

Сделайте это:

return value.equalsIgnoreCase("false") || value.equalsIgnoreCase("true");

Ответ 13

Я предлагаю вам взглянуть на документы Java для этих методов. Похоже, вы используете их неправильно. Эти методы не скажут вам, является ли строка допустимым логическим значением, но вместо этого они возвращают логическое значение, установленное в true или false, на основе строки, которую вы передаете, "true" или "false".

http://www.j2ee.me/javase/6/docs/api/java/lang/Boolean.html

Ответ 14

Здесь вы можете проверить, является ли значение логическим:

boolean isBoolean(String value) {
    return value != null && Arrays.stream(new String[]{"true", "false", "1", "0"})
            .anyMatch(b -> b.equalsIgnoreCase(value));
}

Примеры использования:

System.out.println(isBoolean(null)); //false
System.out.println(isBoolean("")); //false
System.out.println(isBoolean("true")); //true
System.out.println(isBoolean("fALsE")); //true
System.out.println(isBoolean("asdf")); //false
System.out.println(isBoolean("01truefalse")); //false

Ответ 15

См. документы oracle

public static boolean parseBoolean(String s) {
        return ((s != null) && s.equalsIgnoreCase("true"));
    }