Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 As3同时按字母和数字排序_Actionscript 3_Sorting - Fatal编程技术网

Actionscript 3 As3同时按字母和数字排序

Actionscript 3 As3同时按字母和数字排序,actionscript-3,sorting,Actionscript 3,Sorting,因此,我有一种排序方法,可以按字母顺序对值进行排序,这在几乎所有情况下都非常有效: function alphabetical(name1, name2):int { if (name1 < name2){ return -1; } else if (name1 > name2){ return 1; }else { return 0;

因此,我有一种排序方法,可以按字母顺序对值进行排序,这在几乎所有情况下都非常有效:

function alphabetical(name1, name2):int { 
        if (name1 < name2){ 
            return -1; 
        } else if (name1 > name2){ 
            return 1; 
        }else { 
            return 0; 
        };
    };
有点

['abc 1','abc 10','abc 8']
但我需要做的是按字母顺序排序,但当它遇到一个数字时,会考虑一个数值,因此排序会返回

['abc 1','abc 8'.'abc 10']
我希望有一些现有的正则表达式或算法来实现这一点,但恐怕我一点也不知道要搜索什么。我所有的排序搜索要么按字母顺序排序,要么按数字排序,而不是两者都按字母顺序排序


非常感谢

我找到了一个JavaScript解决方案,可以转换为AS3:

解决方案将类似于:

var reA = /[^a-zA-Z]/g;
var reN = /[^0-9]/g;
function sortAlphaNum(a,b) {
    var aA = a.replace(reA, "");
    var bA = b.replace(reA, "");
    if(aA === bA) {
        var aN = parseInt(a.replace(reN, ""), 10);
        var bN = parseInt(b.replace(reN, ""), 10);
        return aN === bN ? 0 : aN > bN ? 1 : -1;
    } else {
        return aA > bA ? 1 : -1;
    }
}

var arr = ['abc 8','abc 1','abc 10'];
arr.sort(sortAlphaNum);

trace(arr); // abc 1,abc 8,abc 10
var reA = /[^a-zA-Z]/g;
var reN = /[^0-9]/g;
function sortAlphaNum(a,b) {
    var aA = a.replace(reA, "");
    var bA = b.replace(reA, "");
    if(aA === bA) {
        var aN = parseInt(a.replace(reN, ""), 10);
        var bN = parseInt(b.replace(reN, ""), 10);
        return aN === bN ? 0 : aN > bN ? 1 : -1;
    } else {
        return aA > bA ? 1 : -1;
    }
}

var arr = ['abc 8','abc 1','abc 10'];
arr.sort(sortAlphaNum);

trace(arr); // abc 1,abc 8,abc 10