Grails Groovy类型测试?
我对Groovy真的是个新手,我正在努力完成一些事情。我已经编写了一些Groovy代码(工作正常)来接收一些文本。此文本应为整数(介于0和10之间)。用户可能会输入不同的内容。在这种情况下,我想做一些特定的错误处理 现在我想知道,测试字符串类型变量是否可以转换为整数的最佳/最常规的方法是什么 (我要做的是使用字符串中的整数或将计算结果设置为0Grails Groovy类型测试?,grails,groovy,integer,testing,assert,Grails,Groovy,Integer,Testing,Assert,我对Groovy真的是个新手,我正在努力完成一些事情。我已经编写了一些Groovy代码(工作正常)来接收一些文本。此文本应为整数(介于0和10之间)。用户可能会输入不同的内容。在这种情况下,我想做一些特定的错误处理 现在我想知道,测试字符串类型变量是否可以转换为整数的最佳/最常规的方法是什么 (我要做的是使用字符串中的整数或将计算结果设置为0 谢谢!字符串类有一个isInteger()方法,您可以使用: def toInteger (String input) { if (input?.
谢谢!字符串类有一个
isInteger()
方法,您可以使用:
def toInteger (String input) {
if (input?.isInteger()) {
return input.toInteger()
}
return 0
}
你是这么说的吗
Integer integer = 0
try {
integer = (Integer) string
assert integer > 0
assert integer < 10
catch(e) {
integer = 0
}
Integer=0
试一试{
整数=(整数)字符串
断言整数>0
断言整数<10
捕获(e){
整数=0
}
在groovy中有很多方法可以做到这一点,如果您对正则表达式感到满意,这将是您可以得到的最简洁的方法:
def processText(String text) {
text ==~ /(10|\d)/ ? text.toInteger() : 0
}
assert 0 == processText("-1")
(0..10).each {
assert it == processText("$it")
}
assert 0 == processText("11")
如果用户做了一些不同的事情,我有点不确定“特定错误处理”是什么意思
如果这是一个web应用程序,我将看一看grails和您可以对域对象的字段施加的约束,这将使您能够轻松地表达您要做的事情。使用groovy包含
if ( x?.isInteger()) {
return (0..10).contains(x)
} else {
return false
}
您的问题中有
class MyDomain {
Integer whatever = 0
static constraints = {
whatever( min:0, max:10)
}
}
if(input.isInteger()&&input.toInteger()>0&&input.toInteger()<10){return input.toInteger()}返回0我建议使用Groovy范围检查值是否在0到10之间。例如:if(0..10中的intValue){//do something}