Answers:
尝试(取决于您想要的结果类型):
Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");
优点:
Boolean.TRUE
或的两个实例Boolean.FALSE
。官方文档在Javadoc中。
更新:
也可以使用自动装箱,但是会降低性能。
我建议仅在需要强制转换时才使用它,而不是在可以避免的情况下使用。
boolean boolean2 = Boolean.valueOf("true");
使用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
}
除了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的回答启发... :-))
好吧,就像现在的2018年1月一样,最好的方法是使用apache's BooleanUtils.toBoolean
。
这会将任何布尔型字符串转换为布尔型,例如Y,yes,true,N,no,false等。
真的好用!
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[] 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
这是我的方法:
"1##true".contains( string )
就我而言,大多数情况是1或true。我使用哈希作为分隔符。
要获取字符串的布尔值,请尝试以下操作:
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
parseBoolean(String s)
根据Javadoc,:) 不会引发异常。
为什么不使用正则表达式?
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
public static boolean parseBoolean(String s)
将字符串参数解析为布尔值。如果字符串参数不是,
null
并且忽略大小写,等于字符串“true
” ,则返回的布尔值表示true值。参数:
s
-包含要解析的布尔表示形式的字符串返回:字符串参数表示的布尔值
由于: 1.5
您可以通过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