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宛 で、お願いしまます。







実行環境






Groovyの詳細についてはJavadocと以下の書籍を参考にしている。




Dierk Konig、Andrew Glover、Paul King、、Guillaume Laforge、Jon Skeet、杉浦 孝、櫻井 正樹、須江 信洋、関谷 和愛、佐野 徹郎、寺沢 尚史

出品者からお求めいただけます。
価格は記載時点のものです。購入前にAmazonでご確認ください。




問題自体は第2版のもの。rubyと似てる部分も多いので、ヒントにもなる。
写経でもいいが自分で考えるために他言語の例をGroovyで置き換えてる。




青木 峰郎、後藤 裕蔵、高橋 征義、まつもと ゆきひろ

価格: ¥ 2,940
価格は記載時点のものです。購入前にAmazonでご確認ください。




Groovyイン・アクションを読むならあった方が便利かな。

Rubyレシピブックは「ほんたった」で立ててる