4

您好,我是 groovy 的初学者,我很困惑如何检查给定的输入是否是数字,我尝试了以下操作

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

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

4

4 回答 4

11

Groovy 的String::isNumber()救援:

def a = "a"

assert !a.isNumber()

def b = "10.90"

assert b.isNumber()
assert b.toDouble() == 10.90
于 2013-08-10T13:04:51.703 回答
5

要回答您的问题,我不会考虑 isNan()。它在网络上被提及,但它没有出现在GDK 的字符串文档中

考虑一下:

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

println "isNumber : ${isNumber}"

或者使用更Java-esque的东西:

def input = "12.37error"

def isNumber = false

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

println "isNumber : ${isNumber}"
于 2013-08-10T10:27:15.740 回答
4

您可以尝试将其转换为数字并在它不是数字时捕获异常

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是有效数字但String类似“123”也会失败。123 是数字,但“123”不是。

于 2013-08-10T10:26:31.500 回答
0

对于带逗号的数字格式,这将失败(例如:10,00,000)

def aNumber = "10,00,000" aNumber.isNumber() 和 aNumber.isDouble() 给出的答案为假。

于 2018-10-15T10:46:52.053 回答