2012-01-14 123 views
0

我有一个阵列,其中所述元件具有相同的ID值“imm1”,“IMM2”,“imm3” ...“imm10”组成的阵列排序字母数字串

的问题是,使用sortOn方法考虑“imm10”低于“imm2”,因为它考虑1和0分开。然后我tryed写

immarray.sortOn("id", Array.NUMERIC) 

,但它不正确应用的顺序,我不知道为什么...也许是因为我的ID礼有一个字母值? 那么,我如何正确排序?

我想这样的结果:

imm1 
imm2 
imm3 
... 
imm10 
imm11 
imm12 
etc... 
+0

除“imm”以外是否还有其他前缀? – 2012-01-14 17:36:27

回答

2

你必须创建一个自定义排序功能。在这个函数中,你必须选择字符串中的数字值并对它们进行排序。总之:

immarray.sort(sortNumeric); 

private function sortNumeric(a:String, b:String):int { 
    return a.match(/\d+/g)[0] - b.match(/\d+/g)[0]; 
} 

一些解释:正则表达式\d+找到字符串中的数字字符。请注意,此示例不是防御性编程,并假定每个字符串都以相同的方式格式化(例如'imm10')。