次のGroovyコードswitchステートメントがあるとします。
def vehicleSelection = "Car Selected: Toyota"
switch (vehicleSelection) {
case ~/Car Selected: (.*)/:
println "The car model selected is " + ??[0][1]
}
新しい()変数を定義せずに「Toyota」という単語を抽出することは可能ですか?def
これは、GroovyによってlastMatcher
追加されたメソッドを使用して可能です。Matcher
import java.util.regex.Matcher
def vehicleSelection = 'Car Selected: Toyota'
switch( vehicleSelection ) {
case ~/Car Selected: (.*)/:
println "The car model selected is ${Matcher.lastMatcher[0][1]}"
}
私にとって本当に役に立ったtim_yatesの答えに基づいて構築する:
コード内の「Matcher.lastMatcher」の束を避けたい場合は、エイリアスとして機能するヘルパー関数を作成できます。
import java.util.regex.Matcher
static Matcher getm()
{
Matcher.lastMatcher
}
def vehicleSelection = 'Car Selected: Toyota'
switch( vehicleSelection ) {
case ~/Car Selected: (.*)/:
println "The car model selected is ${m[0][1]}"
break;
}