我需要以不区分大小写的方式比较两个字段。我有这样的规则:
foo : ObjectTypeA()
bar : ObjectTypeB( name == foo.name )
这适用于相同案例的字符串。我需要的是这样的东西,但它似乎不起作用:
foo : ObjectTypeA()
bar : ObjectTypeB( name.equalsIgnoreCase( foo.name ) )
有关如何使其发挥作用的任何建议?谷歌搜索点击建议使用“匹配”,但匹配运算符似乎只对硬编码模式。
答案 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方法:
埃德森
答案 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