流口水:不区分大小写比较?

发布于 2024-10-14 10:18:26 字数 328 浏览 3 评论 0原文

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

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

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

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

关于如何让它发挥作用有什么建议吗?谷歌搜索找到了使用“匹配”的建议,但匹配运算符似乎只适用于硬编码模式。

I need to compare two fields in a case insensitive way. I have a rule something like this:

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

And that works for strings that are the same case. What I need is something like this, but it doesn't seem to work:

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

Any suggestions on how to get that to work? Googling hits on suggestions to use "matches", but the matches operator only seems to work against a hard coded pattern.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

抱猫软卧 2024-10-21 10:18:26

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

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

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

ObjectType( name equalsIgnoreCase foo.name )

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

Use eval. equalsIgnoreCase method also had a typo in your example code.

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

If you want to use something like:

ObjectType( name equalsIgnoreCase foo.name )

You can take a look at Drools custom operators. Example:
http://members.inode.at/w.laun/drools/CustomOperatorHowTo.html

清眉祭 2024-10-21 10:18:26

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

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

埃德森

If you want to use a custom operator as Toni mentioned you can copy & paste and adjust this class to support the equalsIgnoreCase method:

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

Edson

守护在此方 2024-10-21 10:18:26

== :表示比较对象引用,而

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

假设
soo.name = "内存"; foo.name = "ram";
if(soo.name == foo.name) 返回 false
因为只有内容相同而不是对象。

如果我们说 foo.name = "ram";
soo.name = foo.name;
if(soo.name == foo.name) ** 返回 **true

== : mean to compare the object reference while

name.equalsIgnoresCase( foo.name ) : mean to compare the contents.

let suppose
soo.name = "ram"; foo.name = "ram";
if(soo.name == foo.name) return false
because of the only content is same not the object.

if we say like foo.name = "ram";
soo.name = foo.name;
if(soo.name == foo.name) ** return **true

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文