Grails Groovy类型测试?

Grails Groovy类型测试?,grails,groovy,integer,testing,assert,Grails,Groovy,Integer,Testing,Assert,我对Groovy真的是个新手,我正在努力完成一些事情。我已经编写了一些Groovy代码(工作正常)来接收一些文本。此文本应为整数(介于0和10之间)。用户可能会输入不同的内容。在这种情况下,我想做一些特定的错误处理 现在我想知道,测试字符串类型变量是否可以转换为整数的最佳/最常规的方法是什么 (我要做的是使用字符串中的整数或将计算结果设置为0 谢谢!字符串类有一个isInteger()方法,您可以使用: def toInteger (String input) { if (input?.

我对Groovy真的是个新手,我正在努力完成一些事情。我已经编写了一些Groovy代码(工作正常)来接收一些文本。此文本应为整数(介于0和10之间)。用户可能会输入不同的内容。在这种情况下,我想做一些特定的错误处理

现在我想知道,测试字符串类型变量是否可以转换为整数的最佳/最常规的方法是什么

(我要做的是使用字符串中的整数或将计算结果设置为0


谢谢!

字符串类有一个
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
}

您的问题中有Grase>代码>标签,因此如果您使用GRAILS,您可以考虑在域类上实现这一整数属性。PARAM可以作为文本来输入,但可以将其绑定到一个默认值为0:

的整数属性。
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}