在Groovy中用字母和数字排序的数字字符串
发布时间:2020-12-14 16:23:59 所属栏目:大数据 来源:网络整理
导读:简单的问题,不知道它是否得到一个简单的答案. 有没有办法对包含字母和数字的字符串列表进行排序,但也要考虑数字? 例如,我的列表包含: (1) ["Group 1","Group2","Group3","Group10","Group20","Group30"] (字符串不一定有“group”这个词,也可能有其他单词)
简单的问题,不知道它是否得到一个简单的答案.
有没有办法对包含字母和数字的字符串列表进行排序,但也要考虑数字? 例如,我的列表包含: (1) ["Group 1","Group2","Group3","Group10","Group20","Group30"] (字符串不一定有“group”这个词,也可能有其他单词) 如果我对它进行排序,它会显示: (2) Group 1 Group 10 Group 2 Group 20 Group 3 Group 30 有没有办法像(1)那样排序? 谢谢 解决方法
试试这个:
def test=["Group 1","2","Group30","1","Grape 1","Grape 12","Grape 2","Grape 22"] test.sort{ a,b -> def n1 = (a =~ /d+/)[-1] as Integer def n2 = (b =~ /d+/)[-1] as Integer def s1 = a.replaceAll(/d+$/,'').trim() def s2 = b.replaceAll(/d+$/,'').trim() if (s1 == s2){ return n1 <=> n2 } else{ return s1 <=> s2 } } println test 如果您想首先比较您需要更改内部的数字if: if (n1 == n2){ return s1 <=> s2 } else{ return n1 <=> n2 } 这是它在字符串中找到的最后一个数字,所以你可以写出你想要的,但’index’应该是最后一个数字 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |