如何使用Groovy根据指定的char提取子字符串

时间:2013-08-28 20:05:48

标签: string 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

我需要为每个it.name获取名称的最后部分(value1,value2,value3) 感谢....

3 个答案:

答案 0 :(得分:2)

尝试

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

答案 1 :(得分:2)

如果最后一部分始终位于“_”字符后面,则使用[]运算符和列表(getAt()方法):

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

或使用正则表达式

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

答案 2 :(得分:2)

也可以尝试

it.name.reverse().takeWhile{it != /_/}.reverse()