【发布时间】:2019-06-07 17:49:49
【问题描述】:
重新排序字符串的字符,以便它们以“不区分大小写的字母顺序”顺序连接成一个新字符串。空格和标点符号应该被删除!
输入被限制为不包含数字,只包含包含英文字母的单词。
例子:
alphabetized("The Holy Bible") // "BbeehHilloTy"
我开始:
function alphabetized(s) {
s = s.replace(/\s/g, "").toLowerCase();
return s.split("").sort().join("");
}
console.log(alphabetized("The Holy Bible"));
但我们当然想返回BbeehHilloTy,保持原始字符的大小写。
坦率地说,我不明白为什么期望的结果应该是 BbeehHilloTy。
如果我们不按照 ASCII 字符码值进行排序,那么是什么决定了新字符串中小写字母前面是否应该出现大写字母?
【问题讨论】:
-
如您所说,在原始字符串中出现的顺序
-
所以写一个自定义排序函数......
-
来自MDN "默认排序顺序是基于将元素转换为字符串,然后比较它们的 UTF-16 代码单元值序列" 注意:NOT ASCII 表值。
-
s.split("").sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())).join("")
标签: javascript sorting ascii alphabetical-sort alphabetized