Groovy从字符串开头删除字符

Groovy从字符串开头删除字符,groovy,Groovy,请帮我解决我面临的一个问题。我有几根不是固定长度的绳子。e、 g xxxxxxxxxxxxxxxxxx111 xxxxxxxxxxxx111 xxxxxxxxxxxxxx1111 xxxxxxxxxxx223 我只想把它们转换成 xxx111 xxx111 xxx1111 xxx223 我必须在groovy中执行此操作。 请帮忙。给出: def strings = [ 'xxxxxxxxxxxxxxxxxx111', 'xxxxxxxxxxxx111',

请帮我解决我面临的一个问题。我有几根不是固定长度的绳子。e、 g

xxxxxxxxxxxxxxxxxx111
xxxxxxxxxxxx111
xxxxxxxxxxxxxx1111
xxxxxxxxxxx223
我只想把它们转换成

xxx111
xxx111
xxx1111
xxx223
我必须在
groovy
中执行此操作。 请帮忙。

给出:

def strings = [ 'xxxxxxxxxxxxxxxxxx111',
                'xxxxxxxxxxxx111',
                'xxxxxxxxxxxxxx1111',
                'xxxxxxxxxxx223' ]
你可以试试:

def cutdown =  strings.collect {
    ( it =~ /(.{3}[0-9]+)/ )[ 0 ][ 1 ]
}
或更短:

def cutdown = strings*.find( ~/.{3}[0-9]+/ )

以下解决方案也有效

cardnumber.substring(StringUtils.countMatches(cardnumber, "X") - 3)

分组是否必要?如果没有它,您可以将其缩减为
(it=~/.{3}[0-9]+/)[0]
。另外,根据剩余的字符可能是
/.{3}[0-9]+$/
,可能会添加一个行尾标记?@doelleri在
find
中添加了另一个选项,一个字符串结尾标记可能是个好主意,但很难说,因为这个问题有点模糊(例如,
x
可以是什么)。在我添加评论时看到了您的更新。我喜欢
find
解决方案。