如何在java中将字符串转换为布尔值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (679)

我希望将字符串转换为布尔值,但是输出始终是错的

a=true;
b=true;
c=true;
String zOrginal="(a^b)|c";
boolean z= Boolean.parseBoolean(zOrginal);
out.println(z);
提问于
用户回答回答于

如果要评估表达式的结果"(a^b)|c"where a,b和c是上面定义的变量,只需将表达式直接作为java代码执行,如其他答案中所述

boolean result = (a|b)^c;

但是,如果一个人真的想要评估来自a的表达式String,比如当字符串来自用户输入时,那么就有一个名为JExl的库让你这样做:

将以下行添加到maven pom.xml

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

没有测试下面的代码,但你可以试一试

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.
Boolean result = (Boolean) jExpression.evaluate(context);
System.out.println(result);
用户回答回答于

Boolean.parseBoolean:

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

如果要检查字符串是否为非空字符串,使用String.isEmpty

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励