给定一组单词,我需要将它们放在以单词首字母为键的散列中。
我有单词 = {},键 A..Z 和 0 代表数字和符号。
我在做类似的事情

var firstLetter = name.charAt(0);
    firstLetter = firstLetter.toUpperCase();

if (firstLetter < "A" || firstLetter > "Z") {
    firstLetter = "0";
}
if (words[firstLetter] === undefined) {
    words[firstLetter] = [];
}
words[firstLetter].push(name);

但这在 dieresis 和其他字符中失败,例如 Ärzteversorgung 一词。
这个词放在“0”数组中,我怎么能把它放在“A”数组中?

最佳答案

您可以使用正则表达式。不幸的是,JavaScript 并不将国际字符视为“单词字符”。但是你可以用下面的正则表达式来做到这一点:

var firstLetter = name.charAt(0);
firstLetter = firstLetter.toUpperCase();
if (!firstLetter.match(/^\wÀÈÌÒÙàèìòùÁÉÍÓÚÝáéíóúýÂÊÎÔÛâêîôûÃÑÕãñõÄËÏÖÜäëïöüçÇßØøÅåÆæÞþÐð$/)) {
    firstLetter = "0";
}
if (words[firstLetter] === undefined) {
    words[firstLetter] = [];
}
words[firstLetter].push(name);

关于javascript - 检测字符是否为字母,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10707972/

10-09 23:41