如何在groovy中使用isNan()检查输入是数字还是字符串

8tntrjer  于 2023-05-16  发布在  其他
关注(0)|答案(4)|浏览(343)

你好,我是groovy的初学者,我很困惑如何检查给定的输入是否是一个数字,我尝试了以下方法

def a= ' 12.571245ERROR'
if(a.isNan()==0)
{
println("not a number")
}
else
{
println("number")
}

请帮我如何在groovy中使用isNan。我在谷歌上搜索了很多,但没有找到任何结果。先谢谢你了

kqqjbcuj

kqqjbcuj1#

Groovy的String::isNumber()来拯救:

def a = "a"

assert !a.isNumber()

def b = "10.90"

assert b.isNumber()
assert b.toDouble() == 10.90
pprl5pva

pprl5pva2#

回答你的问题,我不认为是南()。它在网络上被提及,但它没有出现在String文档for the GDK中。
想想这个:

def input = "12.37"
def isNumber = input.isDouble() 

println "isNumber : ${isNumber}"

或者使用更像Java的东西:

def input = "12.37error"

def isNumber = false

try {
    double value = Double.parseDouble(input)
    isNumber = true
} catch (Exception ex) {
}

println "isNumber : ${isNumber}"
8yparm6h

8yparm6h3#

您可以尝试将其强制转换为number,如果不是数字,则捕获异常

def a= ' 12.571245ERROR'

try {
    a as Double
    println "a is number"
}catch (e) {
    println "a is not a number"
}

或者

if(a instanceof Number)
    println "Number"
else
    println "NaN"

但是请记住,在第二种检查方法中,即使a是一个有效的数字,但在像“123”这样的String中,它也会失败。123是数字,但“123”不是。

iqxoj9l9

iqxoj9l94#

对于带逗号的数字格式(例如:10,00,000)
def aNumber =“10,00,000”aNumber.isNumber()和aNumber.isDouble()给予的答案为false。

相关问题