Как проверить, является ли ввод числом или строкой, используя isNan() в groovy
Здравствуйте, я новичок в Groovy, я думаю, как проверить, является ли данный вход число или нет, я попробовал следующее
def a= ' 12.571245ERROR'
if(a.isNan()==0)
{
println("not a number")
}
else
{
println("number")
}
Пожалуйста, помогите мне, как использовать isNan в groovy. Я гуглил его много, но не нашел никакого результата. заранее спасибо
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" - нет.
Groovy, String::isNumber()
в помощь:
def a = "a"
assert !a.isNumber()
def b = "10.90"
assert b.isNumber()
assert b.toDouble() == 10.90
Чтобы ответить на ваш вопрос, я бы не стал рассматривать isNan(). Он упоминается в Интернете, но не отображается в документе String для 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}"
Это не удастся для числового формата с запятыми (например, 10000000)
def aNumber = "10,00,000" aNumber.isNumber () и aNumber.isDouble() дают ответ как ложный.