Разбор "true" / "false" в Java - PullRequest
       10

Разбор "true" / "false" в Java

1 голос
/ 08 июля 2011

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

"true" => true
"false" => false
"foo" => error

Методы разбора в java.lang.Boolean изворотливы - они не различают «false» от «foo».Что-нибудь еще в библиотеках Java (или Guava, или Commons Lang), которое делает это правильно?

Да, это просто пара строк, я просто не хочу писать любую строку, которую я не должендолжен.: -)

Ответы [ 4 ]

6 голосов
/ 08 июля 2011

Честно говоря, этот вопрос смешной. Да, есть способы сделать это встроенным (упоминается API Apache Fan с булевыми утилитами). Но вы делаете все возможное, чтобы сделать что-то причудливым способом за счет A) производительности (перестаньте тратить свое время, напишите три строки кода) и B) удобочитаемости. Что легче читать:

if( "true".equals(myString) )

или

if( BooleanUtils.toBoolean(myString, "true", "false") )

Я бы пошел на первый раз каждый раз. Еще лучше использовать опцию IgnoreCase для сравнения строк. ToBoolean чувствителен к регистру, поэтому «True» на самом деле выдает исключение. Потрясающие! Это действительно полезно!

5 голосов
/ 08 июля 2011
if ( "true".equalsIgnoreCase(yourString) )
      return true;
else if ( "false".equalsIgnoreCase(yourString) )
      return false;
else
      throw new Exception();

Там нет ни одного.

3 голосов
/ 08 июля 2011

Извлеките Apache Commons из Boolean Utils:

API Boolean Utils

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

null возвращается, если совпадений нет.

BooleanUtils.toBoolean ("true", "true", "false") = true
BooleanUtils.toBoolean ("false", "true "," false ") = false

0 голосов
/ 08 июля 2011

Как насчет очень простого:

РЕДАКТИРОВАТЬ: или я упускаю суть ...

boolean isTrue (String s) {
  return theString.toLowerCase().equals("true");
}
...