如何在Java中将String转换为布尔值?

时间:2018-06-23 16:37:25

标签: java string jsp type-conversion boolean

我想将String转换为boolean,但是Output始终为false。

a=true;
b=true;
c=true;
String zOrginal="(a^b)|c";
boolean z= Boolean.parseBoolean(zOrginal);
out.println(z);

输出始终为假,

5 个答案:

答案 0 :(得分:3)

这是Boolean.parseBoolean的源代码:

public static boolean parseBoolean(String b) 
{
  return "true".equalsIgnoreCase(b) ? true : false;
}

此函数唯一返回true的情况是传递给它的字符串是“ true”(尽管有大小写)。

如果要检查字符串是否为非空,请使用String.isEmpty方法。如果您实际上想“评估”字符串,那并不是那么简单...但是您可能希望通读Is there an eval() function in Java?

答案 1 :(得分:3)

您应该直接在字符串中不对表达式求值。

boolean a,b,c;
a=true;
b=true;
c=true;
boolean z= (a^b)|c;
System.out.println(z);

答案 2 :(得分:3)

在Java中,parseBoolean方法将字符串参数解析为布尔值。如果字符串参数不为null且忽略大小写,等于字符串“true”,则返回的布尔值表示true。

因此,如果您解析"(a^b)|c",则会得到false,因为它不会计算表达式。

答案 3 :(得分:1)

如果您要计算表达式"(a^b)|c"的结果,其中abc是上面定义的变量,只需直接以Java执行表达式即可其他答案中所述的代码。

boolean result = (a|b)^c;

但是,如果您真的想对来自String的表达式求值,例如说该字符串来自用户输入,则有一个名为JExl的库可让您执行此操作:

http://commons.apache.org/proper/commons-jexl/

将以下行添加到您的行家pom.xml

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-jexl3</artifactId>
  <version>3.1</version>
</dependency>

还没有测试下面的代码,但是您可以尝试一下。

import org.apache.commons.jexl3.*;

JexlEngine jexl = new JexlBuilder().create();
String expression = "(a|b)^c";
JexlExpression jExpression = jexl.createExpression(expression);

// JexlContext stores the values for variables used in an JexlExpression
JexlContext context = new MapContext();
context.set("a", true);
context.set("b", true);
context.set("c", true);

// evaluate expression.
Long result = (Long) jExpression.evaluate(context);
System.out.println(result); // 0 for false

当然,与直接执行代码相比,性能会更差,因为表达式必须先解析成抽象语法树(AST),然后才能对其求值。

答案 4 :(得分:0)

有多种将字符串转换为布尔值的方法:

  1. 使用 Boolean.valueOf(StringVal)方法:

    public class Test {
       public static void main(String[] args) {
         String val = "false";
         boolean result=Boolean.valueOf(val);
         System.out.println(result);
       }
    }
    

    在这种情况下,仅当字符串为“ true”时返回true,否则返回false。

  2. 您可以创建自己的方法来检查字符串值,并可以基于该值返回true或false。

    public class Test {
    
       public static void main(String[] args) {
         String val = "true";
         boolean result=getBoolean(val);
         System.out.println(result);
       }
    
       public static boolean getBoolean(String value)
       {
        return "true".equalsIgnoreCase(value) ? true : false;
       }
    }