正規表現を使って電話番号を処理し、(国コード)(市外局番)(番号)でグループ化する必要があります。入力フォーマット:スカラの正規表現を使ってグループ化とパターンマッチ
国コード:、市外局番 桁1-3間:1-3の間の桁 、数:
1 877 2638277
91-011-23413627
そして:4-10桁
例との間の私はこのようなグループをプリントアウトする必要があります。
CC=91,AC=011,Number=23413627
これは私がこれまで持っているものです。
String s = readLine
val pattern = """([0-9]{1,3})[ -]([0-9]{1,3})[ -]([0-9]{4,10})""".r
val ret = pattern.findAllIn(s)
println("CC=" + ret.group(1) + "AC=" + ret.group(2) + "Number=" + ret.group(3));
コンパイラは「空のイテレータ」と述べています。私も試しました:
val (cc,ac,n) = s
それもうまくいきませんでした。これを修正するには?
この分割を行うのは悪い考えです。たとえば、英国では、市外局番は5桁にすることができます。英国のWebサイトでは、もう一度別の市外局番を要求しますが、それはまったく意味がありません。 –
これは、テストプログラムの入力フォーマットに過ぎません。なぜ正規表現パターンが "空のイテレータ"を返すのか、なぜval(cc、ac、n)= sが機能しないのかを知りたいだけです。実用的な解決策も役立ちます。 – user3025403