我想用一个可链接的函数转换一些特殊字符的出现,以便像这样工作:
>>> "Den här ån gör gott".normalizor().toUpperCase();
"DEN HAR AN GOR GOTT"
我只对转换某些字符感兴趣:
å >> a
ä >> a
ö >> o
任何有助于我朝着正确方向前进的帮助都将非常感激!
纯JavaScript或使用任何库无关紧要。
答案 0 :(得分:1)
normalize
似乎是一个更好的方法名称:
"Den här ån gör gott".normalize().toUpperCase();
String.prototype.normalize = function() {
return this.replace(/[åä]/g, 'a')
.replace(/[ö]/g, 'o');
}
答案 1 :(得分:0)
如果要转换这些特殊字符,可以将德语(我假设)字符的ASCII值映射到简单的英文字符。
例如,您要在此处映射
ASCII 229(å)到ASCII 97(a)
ASCII 228(ä)到ASCII 97(a)
ASCII 246(ö)到ASCII 111(o)
function normalizor(char) {
if (char.charCodeAt()===228 || char.charCodeAt()===229)
return String.fromCharCode(97);
//or simply return 'a';
}
答案 2 :(得分:0)
String.prototype.normalizor = function() {
var s, i, l, diacritics, chars;
s = this;
chars = ['A', 'a', 'E', 'e', 'I', 'i', 'O', 'o', 'U', 'u', 'N', 'n', 'C', 'c'];
diacritics = [
/[\300-\306]/g, /[\340-\346]/g, // A, a
/[\310-\313]/g, /[\350-\353]/g, // E, e
/[\314-\317]/g, /[\354-\357]/g, // I, i
/[\322-\330]/g, /[\362-\370]/g, // O, o
/[\331-\334]/g, /[\371-\374]/g, // U, u
/[\321]/g, /[\361]/g, // N, n
/[\307]/g, /[\347]/g, // C, c
];
for (i = 0, l = diacritics.length; i < l; i++) {
s = s.replace(diacritics[i], chars[i]);
}
return s;
}
SO上的相同主题:Replacing diacritics in Javascript。