JAVA или JAVA SCRIPT ИЛИ Idoc SCRIPT в алфавитном порядке - PullRequest
1 голос
/ 14 мая 2010

У меня есть следующая задача:

Все элементы внутри категорий должны быть отсортированы в алфавитном порядке, за исключением примеров. Специальные символы и цифры должны отображаться перед буквами.

Я столкнулся с проблемой. Большинство стандартных функций сортировки и плагинов используются в таблице ASCII. В этой таблице следующие символы: ~,}, {и т. Д. Имеют индекс больше, чем буквы, например: Фактический результат сортировки:

1 - #1 A T
2 - A T
3 - {C T

Мне нужно получить:

1 - #1 A T
2 - {C T
3 - A T 

Пожалуйста, дайте мне ваш совет или примеры как можно скорее.

С наилучшими пожеланиями.

Ответы [ 2 ]

0 голосов
/ 14 мая 2010

Это немного утомительно, в основном, чтобы не допустить сортировки «100» перед «2».

Вы можете разбить строки на отдельные символы и группы цифр.

Сортировать любую цифругруппировать как числа и сортировать все остальное по коду символа, после добавления некоторого «веса» к любому символу az.

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
*/
0 голосов
/ 14 мая 2010

Решение "нехватки времени": разрезать данные на 3 массива или списки: специальные символы, числа, символы. (проверить, является ли число или находится между 'a' и 'Z'). Сортировать их с помощью е. Collections.sort или Arrays.sort в Java, которые будут сортировать каждую коллекцию или массив, а затем добавлять их вместе, но больше не выполнять сортировку. Я не проверял это, но похоже, что это может работать

...