如何在groovy脚本中比较字符串
我无法理解为什么我的简单如何在groovy脚本中比较字符串,groovy,Groovy,我无法理解为什么我的简单字符串相等性测试返回false 代码是: boolean isDevelopment() { //config.project_stage is set to "Development" String cfgvar = "${config.project_stage}" String comp = "Development" assert cfgvar.equals(comp) } 结果是: as
字符串相等性测试返回false
代码是:
boolean isDevelopment() {
//config.project_stage is set to "Development"
String cfgvar = "${config.project_stage}"
String comp = "Development"
assert cfgvar.equals(comp)
}
结果是:
assert cfgvar.equals(comp)
| | |
| false Development
Development
如果我这样做,我也会出错:
assert cfgvar == comp
在比较的对象中,有一个不是字符串,而是GString
,请尝试:
cfgvar.toString().equals(comp)
但是,您的代码可以使用groovy v。2.4.5. 您使用的是哪个版本?在您比较的对象中,有一个不是字符串,而是GString
,请尝试:
cfgvar.toString().equals(comp)
但是,您的代码可以使用groovy v。2.4.5. 您使用的是哪个版本?是否检查了尾随空格?对于第一次开发
,至少要将您的输出作为一个输出。比较这些字符串时,请尝试使用.trim()(也可以使用.toLowerCase())
记住:.equals()
在Groovy中是指针比较。我们要做的是==
。是的,与Java中的定义正好相反,但Groovy的定义更有意义:-)
更新:请参阅@tim_yates-I mixed.equals()
的评论,其中包含.is()
是否检查了尾随空格?对于第一次开发
,至少要将您的输出作为一个输出。比较这些字符串时,请尝试使用.trim()(也可以使用.toLowerCase())
记住:.equals()
在Groovy中是指针比较。我们要做的是==
。是的,与Java中的定义正好相反,但Groovy的定义更有意义:-)
更新:见@tim_yates的评论-我混合了.equals()
和.is()
toString()
是不必要的。很可能你有一些拖尾
config.project\u stage
中的空格,因此它们也保留在cfgvar
中
comp
没有额外的空格,从代码中可以看到什么
最初表达式“${config.project\u stage}”
是GString
类型,但由于将其分配给类型为字符串的变量,
它被强制为String
,因此toString()
不会更改任何内容
这取决于您是使用等于(…)
还是=
。
实际上,Groovy默默地将第二种形式转换为第一种形式
总之,您可以编写断言cfgvar.trim()==comp
您还可以在开始时修剪cfgvar
,写下:
cfgvar = "${config.project_stage}".trim()
然后不用担心任何尾随空格。toString()
不是必需的。很可能你有一些拖尾
config.project\u stage
中的空格,因此它们也保留在cfgvar
中
comp
没有额外的空格,从代码中可以看到什么
最初表达式“${config.project\u stage}”
是GString
类型,但由于将其分配给类型为字符串的变量,
它被强制为String
,因此toString()
不会更改任何内容
这取决于您是使用等于(…)
还是=
。
实际上,Groovy默默地将第二种形式转换为第一种形式
总之,您可以编写断言cfgvar.trim()==comp
您还可以在开始时修剪cfgvar
,写下:
cfgvar = "${config.project_stage}".trim()
然后不用担心任何尾随空格。我使用的是2.4.5版。但是cfgvar.toString().equals(comp)也返回false。好吧,它不是一个GString,只是一个变量替换。GString应该是“${->something}”
,不是吗?@rdmueller不会。我使用的是2.4.5版。但是cfgvar.toString().equals(comp)也返回false。好吧,它不是一个GString,只是一个变量替换。GString应该是“${->something}”
,不是吗?@rdmueller不会。equals
在Groovy中不是指针比较。。。这一个确实有效,rtn=cfgvar.toString().trim()==comp。我太高兴了!!!谢谢你,穆勒:-)。它在语法上可能并不完美,但在用它挣扎了2个小时后,我不在乎。我有一个最后期限。再次感谢您的快速帮助equals
在Groovy中不是指针比较。。。这一个确实有效,rtn=cfgvar.toString().trim()==comp。我太高兴了!!!谢谢你,穆勒:-)。它在语法上可能并不完美,但在用它挣扎了2个小时后,我不在乎。我有一个最后期限。再次感谢您的快速帮助!!!很好的总结。谢谢你,瓦尔迪!很好的总结。谢谢你,瓦尔迪!