如何将string对象转换为布尔对象?

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

尝试(取决于你想要的结果types):

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

优点:

  • 布尔:这不会创build新的布尔实例,所以性能更好(垃圾收集也更less)。 它重用了Boolean.TRUEBoolean.FALSE的两个实例。
  • 布尔值:不需要实例,可以使用原始types。

官方文档在Javadoc中 。


更新:

自动装箱也可以使用,但它有一个性能成本。
我build议只有在你不得不自己施放的时候才使用它,而不是在可以避免的情况下使用它。

使用Boolean.valueOf(string)或者Boolean.parseBoolean(string)时,你必须小心。 这样做的原因是,如果string不等于“true”(该情况被忽略),方法将始终返回false。

例如:

 Boolean.valueOf("YES") -> false 

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

例如:

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

除了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的答案启发… :-))

 Boolean b = Boolean.valueOf(string); 

如果string不是null且等于true (忽略大小写),则b值为true。

 boolean b = string.equalsIgnoreCase("true"); 
 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."); } 

我的方式将string转换为布尔值。

 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 

要获得一个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 

这是我做到的:

"1##true".contains( string )

对于我的情况大多是1或真实的。 我使用散列作为分隔符。

为什么不使用正则expression式?

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

你可以通过System类直接设置等价于任何string的布尔值并在任何地方访问它。

 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 

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

这会让你知道该怎么做。

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

方法细节

parseBoolean

public static boolean parseBoolean(String s)

将string参数parsing为布尔值。 返回的布尔值表示如果string参数不为null并且与忽略大小写的string“ true ”相等,则返回true

参数:

s – 包含要parsing的布尔表示forms的String

返回:由string参数表示的布尔值

由于: 1.5