如何在Groovy中解析下面的文件名?

时间:2011-11-02 22:37:59

标签: groovy

文件名的格式为IPCM_ $ date_ $ sequenceNumber.tar.gz 例如。 IPCM_20111012151700_00001.tar.gz 在groovy中获取序列号令牌的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

非常静态的方式是

txt = 'IPCM_20111012151700_00001.tar.gz'
num = txt[-12..-8]

更动态

txt[txt.lastIndexOf('_')+1..txt.indexOf('.')-1]

@Steven:这是你的解决方案,但正在运作

raw = 'IPCM_20111012151700_00001.tar.gz'
num = (raw =~ /IPCM_[0-9]+_([0-9]+).tar.gz/)
print num[0][1]

答案 1 :(得分:0)

这个怎么样?

raw = 'IPCM_20111012151700_00001.tar.gz'
seq = raw.tokenize('_').last()-'.tar.gz'

或者,如果您有随机文件扩展名:

​raw = 'IPCM_20111012151700_00011.tar.gz'
seq = raw.tokenize('_').last().tokenize('.').first()

答案 2 :(得分:-1)

我没有一个groovy编译器,但请尝试:

def seqNum = (raw ~= /IPCM_[0-9+]_([0-9+]).tar.gz/)[0]

这可能有点不对,但你应该得到要点。 (使用正则表达式匹配)