29

次のGroovyコードswitchステートメントがあるとします。

def vehicleSelection = "Car Selected: Toyota"

switch (vehicleSelection) {
   case ~/Car Selected: (.*)/:

      println "The car model selected is "  + ??[0][1] 
}

新しい()変数を定義せずに「Toyota」という単語を抽出することは可能ですか?def

4

2 に答える 2

40

これは、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]}"
}
于 2012-10-17T15:17:28.763 に答える
7

私にとって本当に役に立った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;
}
于 2013-12-15T03:14:48.357 に答える