|
|
|||||
Регистрация: Sep 2006
Сообщений: 145
|
Сортировка украинских символов
Сама проблема достаточно банальна
есть ли готовые решения данной проблемы? |
|
|||||
[+4 06.05.14]
|
собственно с подобными темами врядли кто сталкивался, поэтому могу предложить тока вариант альфа
var ar:Array = [ [1,"A"] , [7,"X"] ] а потом сортировать по первому признаку, или воспользоваться хешами например
__________________
Марк Tween |
|
|||||
Насколько я понимаю Flash не имеет поддержки украинской локали :
Цитата:
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works. |
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
Локаль тут не причем.
Цитата:
Если речь идет только о сортировке букв, а не слов, то нужно написать свою функцию сортировки с учетом дополнительных кодов и вставить ее аргументом в sort (compareUkrFunction) Добавлено через 34 минуты Вроде так var ar:Array = new Array('А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Ґ', 'ґ', 'Д', 'д', 'Е', 'е', 'Є', 'є', 'Ж', 'ж', 'З', 'з', 'И', 'и', 'І', 'і', 'Ї', 'ї', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ь', 'ь', 'Ю', 'ю', 'Я', 'я'); trace (ar.join ('')); trace ('АБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯабвгґдеєжзиіїйклмнопрстуфхцчшщьюя'); trace (ar.sort(compareUkr).join ('')); trace (ar.sort(compareUkr).join ('') == 'АБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯабвгґдеєжзиіїйклмнопрстуфхцчшщьюя'); trace (ar.sort().join ('')); function compareUkr (a:String, b:String):Number { var aCode:Number = a.charCodeAt (0); var bCode:Number = b.charCodeAt (0); switch (aCode) { case 1168://{ / aCode = 1043.5 break; //} case 1169://{ / aCode = 1075.5 break; //} case 1028://{ / aCode = 1045.5 break; //} case 1108://{ / aCode = 1077.5 break; //} case 1030://{ / aCode = 1048.5 break; //} case 1110://{ / aCode = 1080.5 break; //} case 1031://{ / aCode = 1048.6 break; //} case 1111://{ / aCode = 1080.6 break; //} default : } switch (bCode) { case 1168://{ / bCode = 1043.5 break; //} case 1169://{ / bCode = 1075.5 break; //} case 1028://{ / bCode = 1045.5 break; //} case 1108://{ / bCode = 1077.5 break; //} case 1030://{ / bCode = 1048.5 break; //} case 1110://{ / bCode = 1080.5 break; //} case 1031://{ / bCode = 1048.6 break; //} case 1111://{ / bCode = 1080.6 break; //} default : } if(aCode > bCode) { return 1; } else if(aCode < bCode) { return -1; } else { return 0; } } Последний раз редактировалось iNils; 31.01.2012 в 19:22. |
|
|||||
Регистрация: Sep 2006
Сообщений: 145
|
Спасибо за интересный инструмент, украинский вроде поддерживается
И вроде результат такой, как нужно, жаль в sortOn его передать нельзя import flash.globalization.Collator; import flash.globalization.CollatorMode; import flash.globalization.LocaleID; var col:Collator; var ar:Array=new Array("АР Крим","Херсонська","Харківська","Івано-Франківська","Хмельницка","Київ","Україна","Вінницька","Волинська"); var str1:String = "А"; var str2:String = "Б"; col = new Collator("uk-UA",CollatorMode.SORTING); trace(ar.sort(col.compare)); //АР Крим,Вінницька,Волинська,Івано-Франківська,Київ,Україна,Харківська,Херсонська,Хмельницка Последний раз редактировалось XoJlToH; 01.02.2012 в 15:21. |
Часовой пояс GMT +4, время: 15:31. |
|
« Предыдущая тема | Следующая тема » |
|
|