【发布时间】:2012-11-23 10:50:39
【问题描述】:
我需要以下结果。
所有数字都使用数字排序,所有字符串都使用字母数字排序。此外,数值应该列在字符串值之前:
示例: 在 "i","9","89","0045","b","x" 之前
在 "9","0045","89","b","i","x" 之后
我当前的代码如下所示:(数字排序有效,但我的字符串分布在顶部和底部?!-> "b","x","9","0045","89","i ")
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]?)?"));
}
【问题讨论】:
-
也许您想为您的问题添加一些前言,以便为您正在尝试做的事情提供一些背景信息。
标签: apache-flex sorting datagrid compare