Groovyで行末文字を取り除く
行末の改行文字を取り除く
ソース
println "1)行末の改行文字を取り除く" def chomp(str){ str.replaceAll(/(\r|\n)/,"") } println chomp(" 1-1)line\n") println chomp(" 1-2)line\r\n") println chomp(" 1-3)line\r") println chomp(" 1-4)line\t\n") println chomp(" 1-5)line\n") println chomp(" 1-6)line \n") println chomp(" 1-7)line")
実行結果
)行末の改行文字を取り除く 1-1)line 1-2)line 1-3)line 1-4)line 1-5)line 1-6)line 1-7)line
分かりにくいが、1-4の後ろにはタブが1つ、1-6の後には空白が1つある。
末尾の改行と空白類文字を取り除く
trim()だと行頭の空白類文字も削除してしまうので、Rubyのrstrip()相当を正規表現で作成する
ソース
println "2)末尾の改行と空白類文字を取り除く" def rstrip(str){ str.replaceAll(/\s+\z/,"") } println rstrip(" 2-1)line\n") println rstrip(" 2-2)line\r\n") println rstrip(" 2-3)line\r") println rstrip(" 2-4)line\t\n") println rstrip(" 2-5)line\n") println rstrip(" 2-6)line \n") println rstrip(" 2-7)line")
実行結果
2)末尾の改行と空白類文字を取り除く 2-1)line 2-2)line 2-3)line 2-4)line 2-5)line 2-6)line 2-7)line
分かりにくいが、1-4の後ろ、1-6の後に空白、タブともにない。
添削歓迎
ここ間違ってるよ
こうした方がGroovyらしくないか?
などなど
方法は、コメント、トラックバック、はてブ、Twitter @orange_clover宛 で、お願いしまます。
実行環境
- OS:Windows XP
- Groovy Version: 1.6.5
- JVM: 1.6.0_12
Groovyの詳細についてはJavadocと以下の書籍を参考にしている。
Dierk Konig、Andrew Glover、Paul King、、Guillaume Laforge、Jon Skeet、杉浦 孝、櫻井 正樹、須江 信洋、関谷 和愛、佐野 徹郎、寺沢 尚史
出品者からお求めいただけます。価格は記載時点のものです。購入前にAmazonでご確認ください。
問題自体は第2版のもの。rubyと似てる部分も多いので、ヒントにもなる。
写経でもいいが自分で考えるために他言語の例をGroovyで置き換えてる。
Groovyイン・アクションを読むならあった方が便利かな。