/ / Utwórz funkcję łańcuchową, która normalizuje mały zestaw znaków specjalnych - javascript, jquery, znaki specjalne

Utwórz funkcję łańcuchową, która normalizuje mały zestaw znaków specjalnych - javascript, jquery, znaki specjalne

Chciałbym przekonwertować występowanie niektórych znaków specjalnych z funkcją łańcuchową, aby pracować w ten sposób:

>>> "Den här ån gör gott".normalizor().toUpperCase();

"DEN HAR AN GOR GOTT"

Jestem zainteresowany tylko konwersją niektórych znaków:

å >> a
ä >> a
ö >> o

Jakakolwiek pomoc, która pomoże mi we właściwym kierunku, byłaby mile widziana!

Czysty javascript lub korzystanie z dowolnej biblioteki nie ma znaczenia.

Odpowiedzi:

1 dla odpowiedzi № 1

normalize wydaje się lepszą nazwą metody:

"Den här ån gör gott".normalize().toUpperCase();

String.prototype.normalize = function() {
return this.replace(/[åä]/g, "a")
.replace(/[ö]/g, "o");
}

0 dla odpowiedzi nr 2

Jeśli chcesz przekonwertować te znaki specjalne, możesz odwzorować wartości ASCII niemieckiego (I "m zakładając) znaki na proste angielskie.

Na przykład tutaj chcesz odwzorować

ASCII 229 (å) do ASCII 97 (a)

ASCII 228 (ä) do ASCII 97 (a)

ASCII 246 (ö) do ASCII 111 (o)

function normalizor(char) {
if (char.charCodeAt()===228 || char.charCodeAt()===229)
return String.fromCharCode(97);
//or simply return "a";
}

0 dla odpowiedzi № 3

Google dało mi takie rozwiązanie:

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;
}

Ten sam temat na temat SO: Zastępowanie znaków diakrytycznych w Javascript.