如何将字符串对象转换为布尔对象?


当前回答

boolean b = string.equalsIgnoreCase("true");

其他回答

除了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");

(受到zlajo的回答启发……: -))

为什么不用正则表达式呢?

public static boolean toBoolean( String target )
{
    if( target == null ) return false;
    return target.matches( "(?i:^(1|true|yes|oui|vrai|y)$)" );
}

访问http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx

这会让你知道该怎么做。

这是我从Java文档中得到的:

方法的细节 parseBoolean parseBoolean(String s) 将字符串参数解析为布尔值。如果字符串参数不为空,返回的布尔值表示true,并且忽略大小写,等于字符串"true"。 参数: s -包含要解析的布尔表示的字符串 返回:由字符串参数表示的布尔值 自: 1.5

我们创建了soyuz-to库来简化这个问题(将X转换为Y),它只是一组类似问题的SO答案。使用库来解决如此简单的问题可能有些奇怪,但它确实有助于解决许多类似的情况。

import io.thedocs.soyuz.to;

Boolean aBoolean = to.Boolean("true");

请检查它-它非常简单,有很多其他有用的功能

如果你的目标只是将这个字符串变量与“false”或“true”字符串进行比较,而不硬编码这两个值,就像我的情况一样,并且你不想使用Boolean.valueOf(),因为它将对它认为是“true”的任何东西返回true,并将对其他所有东西返回false,就像Brandon指出的那样,你可以执行以下操作。

if (someStringVariable.equals(Boolean.TRUE.toString())) {
...
}

或类似的,

if (someStringVariable.equals(Boolean.FALSE.toString())) {
...
}