如果它确实在开头,我需要在Groovy中从String中删除前缀。
如果前缀为groovy
:
groovyVersion
我期待Version
groovy
我希望空字符串spock
我期待spock
现在我使用.minus()
,但是当我做
'library-groovy' - 'groovy'
然后我得到library-
而不是library-groovy
。
实现我想要的是什么样的常规方式?
答案 0 :(得分:16)
我对Groovy不太了解,但这是我对此的看法:
my_program
答案 1 :(得分:4)
此版本简单明了,但它符合要求,并且是对原始版本的增量更改:
def trimGroovy = {
it.startsWith('groovy') ? it - 'groovy' : it
}
assert "Version" == trimGroovy("groovyVersion")
assert "" == trimGroovy("groovy")
assert "spock" == trimGroovy("spock")
assert "library-groovy" == trimGroovy("library-groovy")
答案 2 :(得分:3)
这是区分大小写的,不使用正则表达式:
def prefix = 'Groovy';
def string = 'Groovy1234';
def result = '';
if (string.startsWith(prefix)) {
result = string.substring(prefix.size())
print result
}
答案 3 :(得分:2)
你可以这样做,但我怀疑它能满足你的所有要求(因为我猜你还有其他你未在此处指明的要求)
def tests = [
[input:'groovyVersion', expected:'Version'],
[input:'groovy', expected:''],
[input:'spock', expected:'spock'],
[input:'library-groovy', expected:'library'],
[input:'a-groovy-b', expected:'ab'],
[input:'groovy-library', expected:'library']
]
tests.each {
assert it.input.replaceAll(/\W?groovy\W?/, '') == it.expected
}
您可以将其添加到String的metaClass
String.metaClass.stripGroovy = { -> delegate.replaceAll(/\W?groovy\W?/, '') }
然后做:
assert 'library-groovy'.stripGroovy() == 'library'
答案 4 :(得分:1)
你应该使用正则表达式:
current version is 1.0
答案 5 :(得分:-1)
解决方案:使用 -
运算符并剪切正确的字符串。
def sentence = "remove_me_i_am_ok"
def string_to_be_remove = "remove_me_"
String result = sentence - string_to_be_remove
print("output: ${result}")
/* output: i_am_ok */