Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.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
JAVA或JAVA脚本或Idoc脚本字母排序_Java_Javascript_Sorting_Alphabetical_Idoc - Fatal编程技术网

JAVA或JAVA脚本或Idoc脚本字母排序

JAVA或JAVA脚本或Idoc脚本字母排序,java,javascript,sorting,alphabetical,idoc,Java,Javascript,Sorting,Alphabetical,Idoc,我有以下任务: 除示例外,类别中的所有项目都应按字母顺序排序。字母前应显示特殊字符和数字 我面临一个问题。大多数标准排序函数和插件都用于ASCII表。在此表中,以下符号:~、}、{等的索引多于字母,例如: 排序的实际结果是: 1 - #1 A T 2 - A T 3 - {C T 我需要得到: 1 - #1 A T 2 - {C T 3 - A T 请尽快给我你的建议或任何例子 致以最诚挚的问候。“时间短”解决方案:将数据切割成3个数组或列表:特殊字符、数字、字符。(测试是否为数字或介于“

我有以下任务:

除示例外,类别中的所有项目都应按字母顺序排序。字母前应显示特殊字符和数字

我面临一个问题。大多数标准排序函数和插件都用于ASCII表。在此表中,以下符号:~、}、{等的索引多于字母,例如: 排序的实际结果是:

1 - #1 A T
2 - A T
3 - {C T
我需要得到:

1 - #1 A T
2 - {C T
3 - A T 
请尽快给我你的建议或任何例子


致以最诚挚的问候。

“时间短”解决方案:将数据切割成3个数组或列表:特殊字符、数字、字符。(测试是否为数字或介于“a”和“Z”之间)。使用Java中的f.e.Collections.Sort或array.Sort对它们进行排序,它将对每个集合或数组进行排序,然后将它们附加到一起,但不再进行任何排序。我没有测试过这一点,但它看起来可能会起作用。

这有点繁琐,主要是为了防止“100”在“2”之前排序

您可以将字符串拆分为单个字符和数字组

按数字对任何数字组进行排序,并按字符代码对其他所有数字组进行排序, 在向任何a-z字符添加一些“权重”后

Array.prototype.a1Sort= function(){
    var a1, b1, rx=/(\d+)|(\D)/g, rd=/\d+/;
    return this.sort(function(a, b){
        a= a.toLowerCase().match(rx);
        b= b.toLowerCase().match(rx);
        while(a.length && b.length){
            a1= a.shift();
            b1= b.shift();
            if(rd.test(a1) || rd.test(b1)){
                if(!rd.test(a1)) return 1;
                if(!rd.test(b1)) return -1;
                if(a1!= b1) return a1-b1;
            }
            else{
                a1= a1.charCodeAt(0);
                b1= b1.charCodeAt(0);
                if(a1> 96 && a1<123) a1+= 1000;
                if(b1> 96 && b1<123) b1+= 1000;
                if(a1!= b1) return a1= b1;
            }
        }
        return a.length-b.length;
    });
}


var s1=['#1 A T','A T','{C T'];

alert(s1.customSort())

/*  returned value: (Array)
#1 A T,{C T,A T
*/
Array.prototype.a1Sort=function(){
变量a1,b1,rx=/(\d+)|(\d)/g,rd=/\d+/;
返回此.sort(函数(a,b){
a=a.toLowerCase().match(rx);
b=b.toLowerCase().match(rx);
while(a.length&&b.length){
a1=a.移位();
b1=b.移位();
if(道路试验(a1)| |道路试验(b1)){
如果(!rd.test(a1))返回1;
如果(!rd.test(b1))返回-1;
如果(a1!=b1)返回a1-b1;
}
否则{
a1=a1.charCodeAt(0);
b1=b1.charCodeAt(0);

如果(a1>96&&a1 96&&B1)你说“类别中的所有项目都应该按字母顺序排序,除了”,但不要完成句子。除非我们知道例外情况是什么,否则我们无法帮助你。你能详细说明吗?很抱歉误解。示例-这是一个项目类别。因此它不会改变任务的主要意义。“类别中的所有项目应按字母顺序排序”