gpt4 book ai didi

java - Drools - 如何检查输入字符串是否为数字

转载 作者:行者123 更新时间:2023-12-01 18:39:18 25 4
gpt4 key购买 nike

我想检查输入字符串是否是 drools 规则中的 double 字符串。输入是一个字符串,我想在输入字符串是数字( double )时触发规则。我怎样才能在规则的when部分写入这个条件?

rule "rule1"
when
(answer!=null && //mycode to check answer is double)
then
//do something
end

最佳答案

非常简短的答案是:你不能,也不应该。为了详细说明这一点,Drools 没有可以应用于字符串来生成 true 或 false 的运算符。然而,Java 提供了一种简单的方法:java.lang.Double.valueOf( String s ),但是您不能在约束中使用它,因为只要 String 无效,它就会抛出异常数量。

因此,简短的答案是:编写一个函数并调用它:

function boolean isValid( String s ){
try {
Double.valueOf( s );
return true;
} catch( Exception e ){
return false;
}
}

rule "check"
when
SomethingMissing( isValid( answer ) )
then ... end

您不必检查答案是否为空,因为该函数也可以处理此问题。

但碰巧的是,这段代码触发了 Drools 中的一个错误,一个在 5.4.0 中,另一个在 5.5.0 中。它在 5.3.0 上运行良好。

您可以尝试另一种方法并使用Drools的模式匹配运算符:

rule "check"
when
SomethingMissing( answer != null and answer matches "???" )
then ... end

您所要做的就是为 ??? 提供正则表达式代表您愿意接受的所有事物。由于这不是一个 Drools 问题,所以我将保留它。

但请注意,正则表达式实际上并不能告诉您它是否是有效的 double 值,因为您无法使用正则表达式检查限制。

关于java - Drools - 如何检查输入字符串是否为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20583089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com