我对此进行了一些搜索,但找不到任何有用的东西。
关键是如果String值为“true”或“false”,则返回值应为true。在其他每一个值中都应该是假的。
我试过这些:
String value = "false";
System.out.println("test1: " + Boolean.parseBoolean(value));
System.out.println("test2: " + Boolean.valueOf(value));
System.out.println("test3: " + Boolean.getBoolean(value));
所有函数返回false:(
答案 0 :(得分:49)
没有方法可以测试String是否编码布尔值;对于所有实际效果,任何非“真实”-String都是“假”。
答案 1 :(得分:33)
return "true".equals(value) || "false".equals(value);
答案 2 :(得分:13)
Apache commons-lang3的BooleanUtils带有toBooleanObject:
方法BooleanUtils.toBooleanObject(String str)
// where:
BooleanUtils.toBooleanObject(null) = null
BooleanUtils.toBooleanObject("true") = Boolean.TRUE
BooleanUtils.toBooleanObject("false") = Boolean.FALSE
BooleanUtils.toBooleanObject("on") = Boolean.TRUE
BooleanUtils.toBooleanObject("ON") = Boolean.TRUE
BooleanUtils.toBooleanObject("off") = Boolean.FALSE
BooleanUtils.toBooleanObject("oFf") = Boolean.FALSE
BooleanUtils.toBooleanObject("blue") = null
答案 3 :(得分:4)
if ("true".equals(value) || "false".equals(value)) {
// do something
} else {
// do something else
}
答案 4 :(得分:4)
您在Boolean
类上调用的方法不检查字符串是否包含有效的布尔值,但它们返回表示字符串内容的布尔值:在字符串中输入“true” ,他们返回true
,在字符串中输入“false”,然后返回false
。
但是,您肯定可以使用这些方法来检查有效的布尔值,因为如果字符串包含“hello”或者不是布尔值,我希望它们抛出异常。
在方法ContainsBoolString
中包裹它然后你就去了。
修改强>
顺便说一下,在C#中有像bool Int32.TryParse(string x, out int i)
这样的方法来检查是否可以解析内容,然后返回解析后的结果。
int i;
if (Int32.TryParse("Hello", out i))
// Hello is an int and its value is in i
else
// Hello is not an int
基准测试表明它们比以下方式更快:
int i;
try
{
i = Int32.Parse("Hello");
// Hello is an int and its value is in i
}
catch
{
// Hello is not an int
}
也许Java中有类似的方法?自从我使用Java以来已经有一段时间......
答案 5 :(得分:4)
也可以通过正则表达式来实现:
Pattern queryLangPattern = Pattern.compile("true|false", Pattern.CASE_INSENSITIVE);
Matcher matcher = queryLangPattern.matcher(booleanParam);
return matcher.matches();
答案 6 :(得分:3)
实际上,检查字符串(类型)中的布尔类型是不可能的。基本上你问的是如何进行'字符串比较'。
像其他人所述。您需要定义何时返回“true”或“false”(在什么条件下)。你想要它是敏感的吗?如果值为null,该怎么办?
我认为Boolean.valueOf()是你的朋友,javadoc说:
返回一个布尔值,其值由指定的String表示。如果字符串参数不为null且等于忽略大小写,则返回的布尔值表示值true,返回字符串“true”。
示例:Boolean.valueOf(“True”)返回true 示例:Boolean.valueOf(“yes”)返回false。
答案 7 :(得分:2)
是的,但是,你没解析“假”吗?如果你解析“true”,那么它们将返回true。
可能存在误解:方法不测试,如果String内容表示布尔值,则将String内容计算为布尔值。
答案 8 :(得分:2)
String value = "True";
boolean result = value.equalsIgnoreCase("true") ? true : false;
答案 9 :(得分:1)
对此,请查看org.apache.commons.lang.BooleanUtils #toBoolean(java.lang.String)以及许多其他有用的函数。
答案 10 :(得分:0)
return value.equals("false") || value.equals("true");
答案 11 :(得分:0)
你还应该考虑的是字符大小......
而不是:
return value.equals("false") || value.equals("true");
这样做:
return value.equalsIgnoreCase("false") || value.equalsIgnoreCase("true");
答案 12 :(得分:0)
我建议您查看这些方法的Java文档。您似乎错误地使用它们。这些方法不会告诉您字符串是否是有效的布尔值,而是根据您传入的字符串“true”或“false”返回布尔值,设置为true或false。
答案 13 :(得分:0)
这是一个可用于检查值是否为布尔值的方法:
boolean isBoolean(String value) {
return value != null && Arrays.stream(new String[]{"true", "false", "1", "0"})
.anyMatch(b -> b.equalsIgnoreCase(value));
}
使用它的例子:
System.out.println(isBoolean(null)); //false
System.out.println(isBoolean("")); //false
System.out.println(isBoolean("true")); //true
System.out.println(isBoolean("fALsE")); //true
System.out.println(isBoolean("asdf")); //false
System.out.println(isBoolean("01truefalse")); //false
答案 14 :(得分:0)
请参阅oracle docs
public static boolean parseBoolean(String s) {
return ((s != null) && s.equalsIgnoreCase("true"));
}
答案 15 :(得分:0)
function isBooleanString(val) {
if (val === "true" || val === "false"){
return true
} else {
return false
}
}
isBooleanString("true") // true
isBooleanString("false") // true
isBooleanString("blabla") // false