如何检查String中的String值是否为布尔类型?

时间:2009-11-19 12:13:28

标签: java string boolean

我对此进行了一些搜索,但找不到任何有用的东西。

关键是如果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:(

16 个答案:

答案 0 :(得分:49)

  • 如果String是(不区分大小写)“true”,则parseBoolean(String)返回true,否则返回false
  • valueOf(String)ditto,返回规范的布尔对象
  • getBoolean(String)是一个红鲱鱼;它获取给定名称的System属性并将其与“true”
  • 进行比较

没有方法可以测试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。

http://www.j2ee.me/javase/6/docs/api/java/lang/Boolean.html

答案 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