在mvel表达式中创建一个数组,并检查数组中是否存在变量

时间:2016-08-29 19:13:41

标签: java regex expression mvel

我有一个带有一些数值x = 5;的变量。

我想要表达如下表达式:

if arr = [4,7,10] mvel 中包含x

这是可能的,如果是的话,怎么样?

截至目前,我必须正确表达:

x == 4 || x == 7 || x == 10

但是因为我可能有一个大清单,所以可以这样做

x in [4,7,10,...]

代码:

for(Rule rule: ruleList)
{
    String expresssion = rule.getConditionExpression();
    boolean result = (Boolean) expressionHandler.execute(expresssion,ruleEvalData);

}

这里的表达式如下:

表达式='x == 4 || x == 7 || x == 10';

和ruleEvalData将包含x。

我想知道是否

MVEL中

表达式='x在[4,7,10,...]中是否可以?

3 个答案:

答案 0 :(得分:1)

使用java.util.stream.IntStream类:

int[] array = {4, 7, 10};
boolean exist = IntStream.of(array).anyMatch(x -> x == 5);

如果此流true的任何元素与提供的谓词of(array)匹配,则会返回false

答案 1 :(得分:1)

另一个选择

Integer[] array = {4, 7, 10};
boolean exist = Arrays.asList(array).contains(5);

答案 2 :(得分:1)

您想使用MVEL contains运算符。您可以使用literal List语法构造要测试的值列表。

[4,7,10] contains x

奇怪的是,我无法在MVEL的文档页面中找到contains运算符的文档,但exists in the code并调用标准的Collection.contains()方法。