removeDiacritics method

String removeDiacritics()

Returns a copy of this string with common diacritical marks removed.

'café'.removeDiacritics();           // "cafe"
'naïve'.removeDiacritics();          // "naive"
'Åmål'.removeDiacritics();           // "Amal"
'ハロー'.removeDiacritics();          // "ハロー" (non-Latin unaffected)

Implementation

String removeDiacritics() {
  const diacritics = {
    'À': 'A',
    'Á': 'A',
    'Â': 'A',
    'Ã': 'A',
    'Ä': 'A',
    'Å': 'A',
    'à': 'a',
    'á': 'a',
    'â': 'a',
    'ã': 'a',
    'ä': 'a',
    'å': 'a',
    'È': 'E',
    'É': 'E',
    'Ê': 'E',
    'Ë': 'E',
    'è': 'e',
    'é': 'e',
    'ê': 'e',
    'ë': 'e',
    'Ì': 'I',
    'Í': 'I',
    'Î': 'I',
    'Ï': 'I',
    'ì': 'i',
    'í': 'i',
    'î': 'i',
    'ï': 'i',
    'Ò': 'O',
    'Ó': 'O',
    'Ô': 'O',
    'Õ': 'O',
    'Ö': 'O',
    'Ø': 'O',
    'ò': 'o',
    'ó': 'o',
    'ô': 'o',
    'õ': 'o',
    'ö': 'o',
    'ø': 'o',
    'Ù': 'U',
    'Ú': 'U',
    'Û': 'U',
    'Ü': 'U',
    'ù': 'u',
    'ú': 'u',
    'û': 'u',
    'ü': 'u',
    'Ý': 'Y',
    'ý': 'y',
    'ÿ': 'y',
    'Ç': 'C',
    'ç': 'c',
    'Ñ': 'N',
    'ñ': 'n',
    'Š': 'S',
    'š': 's',
    'Ž': 'Z',
    'ž': 'z',
    'Æ': 'AE',
    'æ': 'ae',
    'Œ': 'OE',
    'œ': 'oe',
    'ß': 'ss',
  };
  return split('').map((char) => diacritics[char] ?? char).join();
}