Più precisamente parliamo di RegExp non di "ExpReg"
mi crea una cacofonia nel textToString
Cioè? Cosa sarebbe textToString?
Non è possibile tramite ExpReg fare tutto con un'unica istruzione?
Sì, puoi risolvere usando una funzione nel replace che andrà a sostituire i termini trovati confrontandoli, attraverso un oggetto che faccia da dizionario, con quelli sostitutivi.
Puoi prendere spunto da una cosa del genere:
codice:
var str = "Si', e' andato di la', un po' piu' giu' pero'";
console.log(
str.replace(/[aeiou]'/g, function(c) {return {a:"à",e:"è",i:"ì",o:"ò",u:"ù"}[c[0]];})
);
Chiaramente il procedimento che stai impiegando può comunque produrre degli errori ortografici, ad esempio, nel caso in cui ci siano delle vocali che effettivamente vanno apostrofate e non accentate. Potrebbero infatti essere presenti delle parole "troncate" in cui ci va l'apostrofo anziché l'accento.
Vedi la stringa nell'esempio, la parola po' è corretta scritta così, ma il replace la va a modificare in modo ortograficamente errato perché sostituisce comunque il carattere apostrofato con quello accentato.
Un problema analogo sta nelle parole con la é (che ha un accento acuto) come perché, finché, anziché, né. In questo caso il tuo procedimento andrebbe a sostituire sempre la e' con una è (che invece ha un accento grave).
Se non ti interessa il fatto di avere questi eventuali errori, allora puoi usare lo script d'esempio. Diversamente dovrai rivedere meglio il procedimento e aggiungere, nella sostituzione delle lettere in questione, maggiori controlli per ottenere una corretta ortografia.