Reemplace los caracteres acentuados con sus contrapartes en inglés simple en JavaScript — Amit Merchant — Un blog sobre PHP, JavaScript y más

Reemplace los caracteres acentuados con sus contrapartes en inglés simple en JavaScript — Amit Merchant — Un blog sobre PHP, JavaScript y más

Estaba trabajando en esta pequeña aplicación que te permite convertir cualquier texto a slug. Y mientras trabajaba en ello, me encontré con este problema en el que tenía que reemplazar los caracteres acentuados con sus contrapartes en inglés simple.

Si no lo sabe, los caracteres acentuados son caracteres que tienen una marca diacrítica. Por ejemplo, é, à, ç, ñ, etc. son caracteres acentuados. Estos caracteres se utilizan en muchos idiomas como francés, español, portugués, etc.

Para reemplazar estos caracteres acentuados con sus contrapartes en inglés simple en JavaScript, podemos usar el método normalize() que está disponible en el String objeto.

EL normalize() El método devuelve la forma de normalización Unicode de una cadena determinada. Acepta un parámetro llamado form que puede tomar uno de los siguientes valores:

  • NFC - Forma de normalización Composición canónica
  • NFD - Forma de normalización Descomposición canónica
  • NFKC -Composición de compatibilidad de forma de estandarización
  • NFKD - Descomposición de compatibilidad de forma de normalización

Para nuestro caso de uso, podemos usar el NFD forma que dividirá los caracteres acentuados en sus equivalentes en inglés simple.

Por ejemplo, é se dividirá en e Y ´.

Entonces podemos pasar la cadena descompuesta a la replace() método y reemplace los caracteres acentuados con sus equivalentes en inglés simple como este.

const title = 'My Fiancé';

const nonAccentedTitle = title.normalize('NFD')
                   .replace(/[\u0300-\u036f]/g, '');

console.log(nonAccentedTitle);
// output: My Fiance

Como puede ver, usamos la expresión regular /[\u0300-\u036f]/g para hacer coincidir todos los caracteres acentuados y reemplazarlos con una cadena vacía.

Incluso podemos convertirlo en una función reutilizable como esta.

const replaceAccentedCharacters = (str) => {
    return str.normalize('NFD')
              .replace(/[\u0300-\u036f]/g, '');
}

Y así es como puede reemplazar los caracteres acentuados con sus equivalentes en inglés simple en JavaScript.

Si quieres conocer otros artículos parecidos a Reemplace los caracteres acentuados con sus contrapartes en inglés simple en JavaScript — Amit Merchant — Un blog sobre PHP, JavaScript y más puedes visitar la categoría Código.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas