Drools:不区分大小写比较?

时间:2011-01-28 05:37:54

标签: java drools

我需要以不区分大小写的方式比较两个字段。我有这样的规则:

foo : ObjectTypeA()
bar : ObjectTypeB( name == foo.name )

这适用于相同案例的字符串。我需要的是这样的东西,但它似乎不起作用:

foo : ObjectTypeA()
bar : ObjectTypeB( name.equalsIgnoreCase( foo.name ) )

有关如何使其发挥作用的任何建议?谷歌搜索点击建议使用“匹配”,但匹配运算符似乎只对硬编码模式。

3 个答案:

答案 0 :(得分:9)

使用eval。 equalsIgnoreCase方法在您的示例代码中也有拼写错误。

bar : ObjectTypeB(  eval( name.equalsIgnoreCase( foo.name ) ) )

如果你想使用类似的东西:

ObjectType( name equalsIgnoreCase foo.name )

您可以查看Drools自定义运算符。例: http://members.inode.at/w.laun/drools/CustomOperatorHowTo.html

答案 1 :(得分:2)

如果您想使用Toni提到的自定义运算符,您可以复制并粘贴并调整此类以支持equalsIgnoreCase方法:

https://github.com/droolsjbpm/droolsjbpm/blob/master/drools-core/src/main/java/org/drools/base/evaluators/StrEvaluatorDefinition.java

埃德森

答案 2 :(得分:-4)

==:表示在

时比较对象引用

name.equalsIgnoresCase(foo.name):表示比较内容。

让我们假设    soo.name =“ram”; foo.name =“ram”;
if(soo.name == foo.name)返回 false
因为唯一的内容是同一个而不是对象。

如果我们说像foo.name =“ram”;
   soo.name = foo.name;
if(soo.name == foo.name)** return ** true