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クラスというのがあるんですね。
これは勉強になりました。
今後も使えそうです。ありがとうございます。