/ Vytvorte reťazovú funkciu, ktorá normalizuje malú sadu špeciálnych znakov - javascript, jquery, špeciálne znaky

Vytvorte reťazovú funkciu, ktorá normalizuje malú sadu špeciálnych znakov - javascript, jquery, špeciálne znaky

Chcel by som konvertovať výskyt niektorých špeciálnych znakov s funkciou reťazenia, aby fungoval niečo takto:

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

"DEN HAR AN GOR GOTT"

Zaujímam sa iba o konverziu určitých znakov:

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

Akákoľvek pomoc, ktorá ma prinesie správnym smerom, by som ocenila!

Čistý javascript alebo použitie nejakej knižnice nezáleží.

odpovede:

1 pre odpoveď č. 1

normalize Zdá sa, že lepší názov metódy:

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

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

0 pre odpoveď č. 2

Ak chcete konvertovať tieto špeciálne znaky, môžete mapovať hodnoty ASCII nemeckej (predpokladám) do jednoduchých anglických znakov.

Napríklad tu chcete mapu

ASCII 229 (a) až ASCII 97 (a)

ASCII 228 (a) až 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 pre odpoveď č. 3

Google mi dal toto riešenie:

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

Rovnaká téma na SO: Nahradiť diakritické znamienka v Javascript.