web-dev-qa-db-ja.com

Groovyは文字の前に部分文字列を抽出します

私は次のような文字列をたくさん持っています

asdf v1.0
jkl v3.04

私のすべての文字列は文字のグループであり、その後にスペース、「v」、数字が続きます。各文字列、「v」の前に来る部分と「v」の前のスペース文字から抽出したいので、

asdf v1.0 becomes 'asdf'
jkl v3.04 becomes 'jkl'

これについての助けが必要です。私は試した takeWhile { it != 'v' }しかし、結果文字列の「v」の前のスペースが含まれることになりますが、これは望ましくありません。

16
Anonymous Human

部分文字列を簡単に抽出できます。

input.substring(0, input.lastIndexOf(" v"))

vの後の部分を取得するには:

input.substring(input.lastIndexOf(" v") + 2)
30
manouti

述べられている基準を考えると、選択されたソリューションでは得られない場所で以下が正しい結果をもたらすと思います。

String stringParser(String inputString) {
    inputString ? inputString.split(/ v\d/)[0] : ''
}

いくつかのサンプルテスト:

assert stringParser('John Kramer v1.1') == 'John Kramer'
assert stringParser('Kramer v Kramer v9.51') == 'Kramer v Kramer'
assert stringParser('A very hungry caterpillar v2.6') == 'A very hungry caterpillar'
3
BalRog