Come posso combinare un carattere seguito da un "accento combinato" in un singolo carattere?Come posso combinare un carattere seguito da un "accento combinato" in un singolo carattere?
Sto prendendo una frase che l'utente inserisce in una pagina Web e la invia ad un dizionario francese-inglese. A volte la ricerca nel dizionario fallirebbe perché ci sono due rappresentazioni per i caratteri più accentati. Per esempio:
- E può essere fatto in un singolo carattere:
\xE9
(alfabeto latino e con acuta). - Ma è anche rappresentato da due caratteri:
e
+\u0301
(combinazione di accento acuto).
Desidero sempre inviare il precedente (carattere singolo) al dizionario.
In questo momento, lo sto sostituendo ogni occorrenza di due caratteri che trovo con il singolo carattere equivalente. Ma esiste un modo più semplice (vale a dire una riga) per farlo, sia in JavaScript che nel browser quando viene recuperato dal campo di input?
function translate(phrase) {
// Combine accents into a single accented character, if necessary.
var TRANSFORM = [
// Acute accent.
[/E\u0301/g, "\xC9"], // É
[/e\u0301/g, "\xE9"], // é
// Grave accent.
[/a\u0300/g, "\xE0"], // à
[/e\u0300/g, "\xE8"], // è
[/u\u0300/g, "\xF9"], // ù
// Cedilla (no combining accent).
// Circumflex.
[/a\u0302/g, "\xE2"], // â
[/e\u0302/g, "\xEA"], // ê
[/i\u0302/g, "\xEE"], // î
[/o\u0302/g, "\xF4"], // ô
[/u\u0302/g, "\xFB"], // û
// Trema.
[/e\u0308/g, "\xEB"], // ë
[/i\u0308/g, "\xEF"], // ï
[/u\u0308/g, "\xFC"] // ü
// oe ligature (no combining accent).
];
for (var i = 0; i < TRANSFORM.length; i++)
phrase = phrase.replace(TRANSFORM[i][0], TRANSFORM[i][1]);
// Do translation.
...
}
È possibile utilizzare [sostituire] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects% 2FString% 2Freplace) con la funzione e semplificare la corrispondenza in una singola espressione regolare ('. [\\ u0300 \\ u0302]') e controllare la corrispondenza con il dizionario di tutte le scelte ... –