【发布时间】:2018-05-02 17:39:18
【问题描述】:
我在Groovy 中有一个列表,其中包含以下格式的名称:
- My_name_is_Jack
- My_name_is_Rock
- My_name_is_Sunn
如何修剪列表并仅获取列表的最后一部分;即名称 - Jack, Rock and Sunn。 (请注意,名称只有 4 个字符长)
【问题讨论】:
我在Groovy 中有一个列表,其中包含以下格式的名称:
如何修剪列表并仅获取列表的最后一部分;即名称 - Jack, Rock and Sunn。 (请注意,名称只有 4 个字符长)
【问题讨论】:
你可以选择其中一种方法。
lastIndexOf 一起使用 replace方法用空字符串删除My_name_is_
脚本(使用第一种方法):
def list = ['My_name_is_Jack', 'My_name_is_Rock', 'My_name_is_Sunn']
//Closure to get the name
def getName = { s -> s.substring(s.lastIndexOf('_')+1, s.size()) }
println list.collect{getName it}
如果你想使用replace,那么使用下面的闭包。
def getName = { s -> s.replace('My_name_is_','') }
大家可以在线快速试用demo
【讨论】:
或者
def list = ['My_name_is_Jack', 'My_name_is_Rock', 'My_name_is_Sunn']
println list*.split('_')*.getAt(-1)
【讨论】:
您可以删除通用前缀:
def names = [ "My_name_is_Jack", "My_name_is_Rock", "My_name_is_Sunn", ]
assert ['Jack', 'Rock', 'Sunn'] == names*.replaceFirst('My_name_is_','')
或者由于您实际上对最后四个字符感兴趣,您也可以使用这些:
assert ['Jack', 'Rock', 'Sunn'] == names*.getAt(-4..-1)
【讨论】: