按字母顺序对列表排序,末尾为字符
Sort a list alphabetically with characters at the end
我需要按角排序列表,按字母顺序排序(升序),但希望特殊字符,如果有任何前缀到一个项目被推到列表的末尾。例如:列表应该是这样的:
Apple
Banana
*Apple
这里有一个相当简单的解决方案。当手动比较字符串时,最好使用localeCompare,即使用户的语言特定区域指定了不同的排序顺序,它也会正确排序。但是这个函数本身并不能解决问题。在@wZVanG的聪明答案的基础上,我们将使用'W
regex字符组替换字符串开头的任何非单词字符,并使用字母z
将它们自动排序到列表的末尾。
注意其中的一个缺陷是,如果任何单词以多于一个z
开头,它们将在特殊字符之后排序。一个简单的解决方法是向字符串中添加更多的z
s,如return a.replace(/^'W+/, 'zzz').localeCompare(b.replace(/^'W+/, 'zzz')
所示。
var array = ["Banana", "Apple", "*Canana", "Blackberry", "Banana", "*Banana", "*Apple"];
array.sort(function(a,b) {
return a.replace(/^'W+/, 'z').localeCompare(b.replace(/^'W+/, 'z'));
});
这可能不正确,但这是目前我能想到的最好的办法。
var array = ["Apple", "Banana", "*Apple"];
// Split the arrays with and without special chars
var alphaNumeric = array.filter(function (val) {
return !(/[~`!#$%'^&*+='-'[']''';,/{}|''":<>'?]/g.test(val));
});
var specialChars = array.filter(function (val) {
return /[~`!#$%'^&*+='-'[']''';,/{}|''":<>'?]/g.test(val);
});
console.log(alphaNumeric, specialChars);
// Sort them individually
alphaNumeric.sort();
specialChars.sort();
// Bring them back together but put the special characters one afterwards
var both = alphaNumeric.concat(specialChars);
console.log(both);
var list = ["Apple","Orange", "Banana", "*Banana","*Apple"];
regex= /^[A-z]+$/;
dummyArray1=[];
dummyArray2=[];
for(var i =0;i< list.length; i++){
if(regex.test(list[i][0])){
dummyArray1.push(list[i]);
}
else{
dummyArray2.push(list[i]);
}
}
console.log(dummyArray1.sort());
console.log(dummyArray2.sort());
console.log(dummyArray1.concat(dummyArray2));
一行:
var sorted = ["Banana", "Apple", "*Canana", "Blackberry", "/Banana", "*Banana", "*Apple"]
.sort(function(a, b, r){
return r = /^[a-z]/i, (r.test(a) ? a : "z" + a) > (r.test(b) ? b : "z" + b)
});
//Test
document.write(sorted.join("<br />"));
如果条目不是以字母开头,则添加Z
。
相关文章:
- 在 Javascript 中对特殊字符进行排序 (æ)
- JQuery根据连字符前的首字母对列表进行排序
- 带有连字符的 Jquery 表排序器编号
- localeCompare 显示使用前导变音字符对单词进行排序时不一致的行为
- 按字母顺序、数字顺序和特殊字符对字符串数组进行排序
- JavaScript Table 使用可排序对重音字符进行排序
- 在MySQL,PHP或一般情况下排序时字符的优先级是什么
- 在带有特殊字符的 Javascript 中排序
- javascript:用整数和字符以某种方式对数组进行排序
- 如何用javascript中的字符和数字以某种方式对数组进行排序
- 使用JQuery对多维JSON数组排序后的额外字符
- 在javascript中使用特殊字符对数字数据进行排序
- 按数组的第一个字符排序
- 用于解释整个整数而不是字符的字母数字排序算法- Javascript
- 排序——将数字和特殊字符移到末尾
- 根据字符串中的字符对字符串数组进行排序
- 如何使jQuery排序工作与更多的字符
- 对包含特殊字符的字符串进行排序,例如N/S,N/ a
- 在末尾使用特殊字符进行排序
- 如何更改在此字符排序器代码中显示结果的方式