如何将String对象转换为Boolean对象?

时间:2009-10-08 16:00:58

标签: java string boolean

如何将String对象转换为Boolean对象?

14 个答案:

答案 0 :(得分:492)

尝试(取决于您想要的结果类型):

Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");

优势:

  • 布尔值:这不会创建布尔的新实例,因此性能更好(并且垃圾收集更少)。它重用了Boolean.TRUEBoolean.FALSE的两个实例。
  • 布尔值:不需要实例,使用基元类型。

官方文档位于Javadoc


更新:

也可以使用自动装箱,但它具有性能成本 我建议只有当你必须自己施展时才使用它,而不是在施放是可以避免的时候。

答案 1 :(得分:87)

使用 Boolean.valueOf(string) Boolean.parseBoolean(string)时必须小心。这样做的原因是,如果String不等于“true”,则方法将始终返回false(忽略大小写)。

例如:

Boolean.valueOf("YES") -> false

由于这种行为,我建议添加一些机制以确保应该转换为布尔值的字符串遵循指定的格式。

例如:

if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
    Boolean.valueOf(string)
    // do something   
} else {
    // throw some exception
}

答案 2 :(得分:21)

Boolean b = Boolean.valueOf(string);

如果字符串不是null并且等于b(忽略大小写),则true的值为true。

答案 3 :(得分:17)

除了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的回答......: - ))

答案 4 :(得分:10)

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

答案 5 :(得分:9)

好吧,就像现在2018年1月一样,最好的办法就是使用apache的BooleanUtils.toBoolean

这会将任何类似boolean的字符串转换为boolean,例如是的,是的,真的,N,不,假等等。

真的很方便!

答案 6 :(得分:3)

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.");
    }

我将字符串转换为布尔值的方法。

答案 7 :(得分:2)

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

答案 8 :(得分:0)

我就这样做了:

"1##true".contains( string )

我的情况大多是1或者是真的。我用哈希作为分隔符。

答案 9 :(得分:0)

要获取String的布尔值,请尝试:

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.
    }
}

如果有错误,它将返回null。 例如:

toBoolean("true"); // Returns true
toBoolean("tr.u;e"); // Returns null

答案 10 :(得分:0)

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

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

答案 11 :(得分:0)

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

import io.thedocs.soyuz.to;

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

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

答案 12 :(得分:-2)

您可以直接设置与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

答案 13 :(得分:-3)

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

这将让您了解该怎么做。

这是我从Java documentation得到的:

  

方法详情

     

<强> parseBoolean

     

public static boolean parseBoolean(String s)

     

将字符串参数解析为布尔值。返回的布尔值表示如果字符串参数不是null并且等于(忽略大小写)字符串“true”,则返回true。

     

<强>参数:

     

s - 包含要解析的布尔表示的String

     

返回:由字符串参数

表示的布尔值      

<强>时间:   1.5