2013-08-28 34 views
0

我需要提取部分文件夾的名稱。我有此代碼爲每個文件夾如何使用Groovy根據指定的字符提取子字符串

import groovy.io.FileType 
def dirs = [] 
def currentDir = new File('c:\\CompilationStaging') 
currentDir.eachFile FileType.DIRECTORIES, { 
    dirs.add('C:\\CompilationStaging\\'+it.name) 
    println(it.name) 
} 
dirs.sort() 
def list = dirs.reverse() 

這讓我的文件夾列表,以特定格式的:

  • 2013.28.08.14.08.16_Debug_Value1

  • 2013.28.08.14 .08.16_Release_Value2

  • 2013.28.08.14.18.36_Debug_Value3

我需要得到的名稱(值1,值2,值3) 感謝各it.name只有最後一部分....

回答

1

嘗試

println(it.name.split('_')[ -1 ].toLowerCase()) 
+0

謝謝你的人,這是偉大的人...... –

+0

我證實今天我慢。就在發佈之前,我刷新了,看到你的答案與我的相匹配,除了小寫:),所以我不得不調整。 :P – dmahapatro

2

如果最後總是會後一個「_」字符然後使用[]操作者與列表(其是getAt()法):

it.name[it.name.lastIndexOf('_')+1..-1] 

或者用雷傑X

def regex = /.*(Value\d+$)/ 
def matcher = (it.name =~ regex) 
println matcher[0][1] 
2

也可以嘗試

it.name.reverse().takeWhile{it != /_/}.reverse() 
相關問題