Re:ファイルの添え番号の桁を3桁に揃えるGroovyスクリプト - No Programming, No LifeというGroovyを利用してファイル名のリネームを行うコードがあったので、記載されていたものを拝借して僕なりにコーディングしてみた。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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を利用する例)
1
2
| format = new java.text.MessageFormat('{0}[{1}]{2}')
def maxDigit = list.collect{ format.parse(it)[1] }*.size().max()
|
MessageFormatっていうクラスあるんですね(恥