Re:Re:ファイルの添え番号の桁を3桁に揃えるGroovyスクリプト
Re:ファイルの添え番号の桁を3桁に揃えるGroovyスクリプト - No Programming, No LifeというGroovyを利用してファイル名のリネームを行うコードがあったので、記載されていたものを拝借して僕なりにコーディングしてみた。
def list = [ 'hoge[1].jpg', 'hoge[11].jpg', 'hoge[2].jpg', 'hoge[10111].jpg', 'hoge[10].jpg', 'hoge[100].jpg' ] // 最大桁数を求めて def maxDigit = list*.replaceAll(/^[^d]*|[^d]*$/, "")*.size().max() // 変換して def repList = list.collect{ padNumber(it, maxDigit) } // ソートして出力する repList.sort().each{ println it } def padNumber(text, digit) { text.replaceAll(/d+/){ it.padLeft(digit, '0') } }
最大桁数を求める部分を記述して気づいたけど、こういうコード記述する機会は決して少なくはないと思う。
文字列の配列から特定のパターンの文字列のみを取り出したい場合は、こんな記述もできるということを始めて知った未熟者。
javascriptなら、" 文字列 ".replace(/^ *| *$/g, "")みたいにしてtrimするコード書くことよくありますね。
追記:2009/01/27
fumokmmさんが、以下のような方法も教えてくれました。(MessageFormatを利用する例)
format = new java.text.MessageFormat('{0}[{1}]{2}') def maxDigit = list.collect{ format.parse(it)[1] }*.size().max()
MessageFormatっていうクラスあるんですね(恥
ディスカッション
コメント一覧
ゲンゾウさんこんばんは。fumokmmです。
ブラッシュアップしていただきありがとうございます。
あまり実用的ではないですが、MessageFormatを利用する例も考えてみました。
format = new java.text.MessageFormat(‘{0}[{1}]{2}’)
def maxDigit = list.collect{ format.parse(it)[1] }*.size().max()
>fumokmmさん
MessageFormatクラスというのがあるんですね。
これは勉強になりました。
今後も使えそうです。ありがとうございます。