Groovyでタブと半角文字を変換する
タブと半角空白文字を相互に変換する
該当するメソッドが、Groovy 1.7.3から導入されている。
expand()、expand(int tabStop)は、指定されたタブ幅に対応するように、タブを半角文字へ
置換するメソッド。
unexpand()、unexpand(int tabStop)は、半角空白文字を、指定されたタブ幅のタブに
対応するように、置換するメソッド。
ソース
tab2space="""aaaa \tbbb cccc\tddddd eeeeee fffffff\t gggggggg """ space2tab="""aaaa bbb ccccc ddddd eeeeee fffff gggggggg """ println tab2space.expand() println tab2space.expand(4) println space2tab.unexpand() println tab2space.unexpand(4)
実行結果
aaaa bbb cccc ddddd eeeeee fffffff gggggggg aaaa bbb cccc ddddd eeeeee fffffff gggggggg aaaa bbb ccccc ddddd eeeeee fffff gggggggg aaaa bbb cccc ddddd eeeeee fffffff gggggggg
ブログ上だと区別できない (^ ^;;
空白とタブを区別できるエディタなどコピーして確認して。
添削歓迎
ここ間違ってるよ
こうした方がGroovyらしくないか?
などなど
方法は、コメント、トラックバック、はてブ、Twitter @orange_clover宛 で、お願いしまます。
実行環境
- OS:Windows XP
- Groovy Version: 1.7.8 expand()、unexpand()が1.7.3以降のため
- JVM: 1.6.0_12
Groovyの詳細についてはJavadocと以下の書籍を参考にしている。
Dierk Konig、Andrew Glover、Paul King、、Guillaume Laforge、Jon Skeet、杉浦 孝、櫻井 正樹、須江 信洋、関谷 和愛、佐野 徹郎、寺沢 尚史
しばらくすれば2nd Editionが出るはず
問題自体は第2版のもの。rubyと似てる部分も多いので、ヒントにもなる。
写経でもいいが自分で考えるために他言語の例をGroovyで置き換えてる。
Groovyイン・アクションを読むならあった方が便利かな。