2011-02-16
Groovyで正規表現で文字列を分割する
間が空いてしまったが、Groovyで文字列を単語に分けるからの続き
正規表現を使って文字列を分割する。文字列をカンマ区切り。
ソース
println "1)" println "2003,11,21,大根,150円".split(/,/) println "2)" "2003,11,21,大根,150円".split(/,/).each{println it} println "3)" println "2003,11,21,大根,150円".split(/,/,3) println "4)" "2003,11,21,大根,150円".split(/,/,3).each{println it} println "5)" println "2003,11,21,大根,150円".split(/(,)/) println "6)" "2003,11,21,大根,150円".split(/(,)/).each{println it}
結果
[D:\workspace\groovy_SandBox]groovy Q048_正規表現で文字列を分割する.groovy 1) [2003, 11, 21, 大根, 150円] 2) 2003 11 21 大根 150円 3) [2003, 11, 21,大根,150円] 4) 2003 11 21,大根,150円 5) [2003, 11, 21, 大根, 150円] 6) 2003 11 21 大根 150円
補足
1)2)
,で区切る
Rubyだと、["2003", "11", "21", "大根", "150円"]となるようだ。
Javaでもそうなると思うんだけど、Groovyだと違うのか?
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/String.html#split%28java.lang.String%29
3)4)
,で区切って最大3個に区切る。第2パラメータは返される配列の長さ
5)6)
Rubyだと
["2003", ",", "11", ",", "21", ",", 大根, ",", 150円]とその内容も含まれるようだが
Groovyでは含まれない。
実行環境
- OS:Windows XP
- Groovy Version: 1.6.5
- JVM: 1.6.0_12
Groovyの詳細についてはJavadocと以下の書籍を参考にしている。
Groovyイン・アクション
posted with amazlet
問題自体は第2版のもの。rubyと似てる部分も多いので、ヒントにもなる。
写経でもいいが自分で考えるために他言語の例をGroovyで置き換えてる。
青木 峰郎、後藤 裕蔵、高橋 征義、まつもと ゆきひろ
価格: ¥ 2,940 価格は記載時点のものです。購入前にAmazonでご確認ください。
Groovyイン・アクションを読むならあった方が便利かな。
Rubyレシピブックは「ほんたった」で立ててる