I\'m trying to convert some strings that are in Czech, Spanish, French etc. I\'d like to take out the accent marks in the letters while keeping the letter. (E.g. convert é t
Here's my adaptation of Leonardo's solution. It extends the string class for ease of use and uses SplitMapJoin
instead of a for loop:
extension DiacriticsAwareString on String {
static const diacritics =
'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
static const nonDiacritics =
'AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz';
String get withoutDiacriticalMarks => this.splitMapJoin('',
onNonMatch: (char) => char.isNotEmpty && diacritics.contains(char)
? nonDiacritics[diacritics.indexOf(char)]
: char);
}