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

String 如何使用Groovy根据指定的字符提取子字符串,string,groovy,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() d

我需要提取文件夹名称的一部分。我有每个文件夹的代码

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_调试_值1

  • 2013.28.08.14.08.16_发布_值2

  • 2013.28.08.14.18.36_调试_值3

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

试试看

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


如果最后一部分总是在一个“u”字符之后,则使用
[]
运算符作为列表(即
getAt()
方法):

或者使用正则表达式

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

如果最后一部分总是在一个“u”字符之后,则使用
[]
运算符作为列表(即
getAt()
方法):

或者使用正则表达式

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

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

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

我被证实今天行动迟缓。就在发布之前,我刷新了页面,看到你的答案与我的答案匹配,除了小写:),所以我不得不调整我确认我今天动作很慢。就在发布之前,我刷新了页面,看到你的答案与我的答案匹配,除了小写:),所以我不得不调整P