我需要以下結果。使用自定義compareFunction對數據網格進行Flex排序(排序數字和文本字母數字)
所有數字都使用數字排序,所有字符串都使用字母數字排序。進一步,該數值應的字符串值之前所列:
實施例: 之前的 「i」, 「9」, 「89」, 「0045」, 「B」,在 「×」
「9」,「0045」,「89」,「b」,「i」,「x」
我目前的代碼如下所示:(數字排序工作,但我的字符串分佈到頂部和底部? - > 「b」, 「X」, 「9」, 「0045」, 「89」, 「我」)
public function compareFunction(obj1:Object, obj2:Object):int {
var id1:String = (obj1 as WdProblem).id;
var id2:String = (obj2 as WdProblem).id;
if(id1.replace(' ', '') == "n") {
var sdld:int = 0;
}
var num1:int = Number(id1);
var num2:int = Number(id2);
if(stringIsAValidNumber(id1) && stringIsAValidNumber(id2)) {
if(num1 == num2) {
return 0;
} else {
if(num1 > num2) {
return 1;
} else {
return -1;
}
}
} else if(!stringIsAValidNumber(id1) && !stringIsAValidNumber(id2)) {
return ObjectUtil.compare(id1, id2);
//return compareString(id1, id2);
} else if(!stringIsAValidNumber(id1) && stringIsAValidNumber(id2)) {
return 1;
} else if(stringIsAValidNumber(id1) && !stringIsAValidNumber(id2)) {
return -1;
}
return -1;
}
private function stringIsAValidNumber(s:String):Boolean {
return Boolean(s.match("[0-9]+(\.[0-9][0-9]?)?"));
}
也許你要一點點前言添加到您的問題提供一些背景是什麼你正在努力。 – JeffryHouser