Groovyでタブと半角文字を変換する


id:torazukaGroovyたん




タブと半角空白文字を相互に変換する
該当するメソッドが、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で置き換えてる。




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

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




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

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