Java 解析;“真的”&引用;假;在爪哇

Java 解析;“真的”&引用;假;在爪哇,java,parsing,text-processing,Java,Parsing,Text Processing,正确解析布尔字符串的实用方法是什么?我的意思是说 "true" => true "false" => false "foo" => error java.lang.Boolean中的解析方法是不可靠的——它们不区分“false”和“foo”。Java库(或者Guava,或者CommonsLang)中还有什么其他功能可以正常工作 是的,只是几行,我只是不想写任何我不该写的行。:-) 查看apache commons中的布尔UTIL表单: 将字符串转换为布尔值 如果不匹配,则引

正确解析布尔字符串的实用方法是什么?我的意思是说

"true" => true
"false" => false
"foo" => error
java.lang.Boolean中的解析方法是不可靠的——它们不区分“false”和“foo”。Java库(或者Guava,或者CommonsLang)中还有什么其他功能可以正常工作


是的,只是几行,我只是不想写任何我不该写的行。:-)

查看apache commons中的布尔UTIL表单:

将字符串转换为布尔值 如果不匹配,则引发异常 找到了

如果不存在匹配项,则返回null

BooleanUtils.toBoolean(“真”, “真”、“假”)=真
BooleanUtils.toBoolean(“false”, “真”、“假”)=假


没有一个。

非常简单的:

编辑:还是我没有抓住重点

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

老实说,这个问题很荒谬。是的,有一些内置的方法可以做到这一点(提到的是ApacheFan的布尔UTILSAPI)。但是你正在以一种奇特的方式做一些事情,代价是a)生产率(停止浪费时间,编写三行代码)和B)可读性。更容易阅读的内容:

if( "true".equals(myString) )


我每次都会选第一个。更好的是,使用IgnoreCase选项进行字符串比较。toBoolean是区分大小写的,所以“True”实际上会抛出一个异常。令人惊叹的!那真的很有用

在某种程度上,重用代码/库太过分了。这是其中一次。我想你得写几行不确定是否存在任何在不匹配时抛出错误的内容。您可能会花更多的时间寻找解决方案,而不是编写自己的布尔值。parse((String)str,(boolean)strictMatch)。有时(但并非总是)编写几行代码比依赖第三方库要好。安卓有人吗?这当然是个荒谬的问题:)我问这个问题是因为我看到Boolean.valueOf在今天的代码中使用,当我看到它的代码时,我很惊讶。一个不必要的错误等待发生!我只能认为它在JDK中反映了它的时代,希望这些天不会这样写。@Alexander--谢谢:-)可能是因为OP不想“写任何行”,我认为
equalsIgnoreCase
更合适,不是吗?交换比较可能是个好主意。如果s为null,则会抛出NPE。OP只希望“true”和“false”作为有效选项。在您的情况下,任何字符串都是有效的选项。感谢指向BooleanUtils的指针。我认为这很合适。它不会抛出错误,但会返回null,这仍然会捕获问题(在取消装箱时)。-1用于斯特劳曼比较;选择是BooleanUtils调用还是类似@Kal的示例。两者都不漂亮。两者都能完成任务。正如你所说,这不是最严肃的问题
if( "true".equals(myString) )
if( BooleanUtils.toBoolean(myString, "true", "false") )