Ano*_*man 16 regex string groovy
我有一堆字符串
asdf v1.0
jkl v3.04
Run Code Online (Sandbox Code Playgroud)
我的所有字符串都是一组字符,后跟一个空格,然后是'v',然后是一个数字.我想从每个字符串中提取,在'v'之前的部分和在'v'之前的空格字符,以便:
asdf v1.0 becomes 'asdf'
jkl v3.04 becomes 'jkl'
Run Code Online (Sandbox Code Playgroud)
只需要一些帮助.我尝试takeWhile { it != 'v' }但最终在结果字符串中的'v'之前包含了我不想要的空格.
man*_*uti 30
您可以简单地提取子字符串:
input.substring(0, input.lastIndexOf(" v"))
Run Code Online (Sandbox Code Playgroud)
获得后面的部分v:
input.substring(input.lastIndexOf(" v") + 2)
Run Code Online (Sandbox Code Playgroud)
我认为,鉴于上述标准,以下将在所选解决方案不会的地方给出正确的结果:
String stringParser(String inputString) {
inputString ? inputString.split(/ v\d/)[0] : ''
}
Run Code Online (Sandbox Code Playgroud)
一些示例测试:
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'
Run Code Online (Sandbox Code Playgroud)