groovy: 从列表中删除数字和句号

groovy: remove numbers and period sign from list

我有以下列表:

def myOptions = ['1.0 Small', '2.0 Medium', '3.0 Large']

我想删除数字和句号,只是 return 列表作为 ['Small', 'Medium', 'Large']

我正在尝试以下操作,但它仍然打印列表的原始元素。

for (String el: myOptions) {
            StringUtils.remove(el, ".").replaceAll("[0-9]", "").trim();
            KeywordUtil.logInfo(el);
        }

这取决于您的要求的一些细节。如果您想消除直到并包括最后一个 space 个字符的所有内容,您可以这样做。

def myOptions = ['1.0 Small', '2.0 Medium', '3.0 Large']

def results = myOptions.collect { value ->
   int idx = value.lastIndexOf(' ')
   if(idx >= 0) {
       return value[(1 +idx)..-1]
   }
   value      
}

println results

如果最后一个 space 字符不是要拆分的对象,您可以使用类似的方法,但寻找除最后一个 space 之外的其他内容(比如可能消除所有内容直到和例如,包括第一个 space。

千种方式:

def myOptions = ['1.0 Small', '2.0 Medium', '3.0 Large']

def resultSplit = myOptions*.split( ' ' )*.getAt( 1 )
def resultReplace = myOptions*.replaceFirst( /\d+\.\d+ (\w+)/, '' )

assert resultSplit == ['Small', 'Medium', 'Large']
assert resultReplace == ['Small', 'Medium', 'Large']

使用collect处理列表,split空白处的每个元素,取last部分拆分

def myOptions = ['1.0 Small', '2.0 Medium', '3.0 Large']

assert myOptions.collect { it.split(' ')[-1]} == ['Small', 'Medium', 'Large']