带变量的下标运算符或如何切割行尾字符?
Subscript operator with variable or how to cut the end-of-line characters?
我在 Jenkinsfile 中有一个表达式:
myvar = myvar.substring(0, myvar.length() - 2)
目标是从字符串(包含批处理命令的执行结果)中截取EoL字符。
最近我为 VSCode 安装了 GroovyLint 插件,它抱怨这一行:
Violation in class None. The String.substring(int, int) method can be replaced with the subscript operatorGroovyLint(UnnecessarySubstring-1)
我用谷歌搜索了那个下标运算符是什么,看起来替换应该是这样的:
myvar = myvar[0..myvar.length() - 2]
但不幸的是,它不起作用:它没有给出可见的错误,但也没有对 myvar 进行任何更改。
我想念什么?也许您不能将变量用作下标运算符的一部分?
也许有更好的方法来删除那些行尾字符?我想我可以使用正则表达式,但对我来说,这听起来有点矫枉过正。
谢谢!
感谢ernset_k,找到答案了!
问题是下标运算符包含上限。在我原来的场景中,最后 2 个字符不可打印,这就是为什么我在调试时没有看到差异。我不得不使用“myvar.length()-3”。
但如ernest_k所示,我们也可以使用运算符的其他选项来代替计算字符串的长度trim。所有这些示例都按预期工作:
println myvar[0..myvar.length() - 3]
println myvar[0..<-2]
println myvar[0..-3]
我在 Jenkinsfile 中有一个表达式:
myvar = myvar.substring(0, myvar.length() - 2)
目标是从字符串(包含批处理命令的执行结果)中截取EoL字符。
最近我为 VSCode 安装了 GroovyLint 插件,它抱怨这一行:
Violation in class None. The String.substring(int, int) method can be replaced with the subscript operatorGroovyLint(UnnecessarySubstring-1)
我用谷歌搜索了那个下标运算符是什么,看起来替换应该是这样的:
myvar = myvar[0..myvar.length() - 2]
但不幸的是,它不起作用:它没有给出可见的错误,但也没有对 myvar 进行任何更改。
我想念什么?也许您不能将变量用作下标运算符的一部分?
也许有更好的方法来删除那些行尾字符?我想我可以使用正则表达式,但对我来说,这听起来有点矫枉过正。
谢谢!
感谢ernset_k,找到答案了!
问题是下标运算符包含上限。在我原来的场景中,最后 2 个字符不可打印,这就是为什么我在调试时没有看到差异。我不得不使用“myvar.length()-3”。
但如ernest_k所示,我们也可以使用运算符的其他选项来代替计算字符串的长度trim。所有这些示例都按预期工作:
println myvar[0..myvar.length() - 3]
println myvar[0..<-2]
println myvar[0..-3]