2012-01-14 250 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')。