normalizeString static method

String normalizeString(
  1. String input
)

Normaliza una cadena, quitando acentos y caracteres especiales comunes.

Implementation

static String normalizeString(String input) {
  // Mapa de caracteres acentuados y especiales a sus equivalentes sin acento.
  const Map<String, String> accentMap = {
    'á': 'a', 'é': 'e', 'í': 'i', 'ó': 'o', 'ú': 'u',
    'Á': 'A', 'É': 'E', 'Í': 'I', 'Ó': 'O', 'Ú': 'U',
    'à': 'a', 'è': 'e', 'ì': 'i', 'ò': 'o', 'ù': 'u',
    'À': 'A', 'È': 'E', 'Ì': 'I', 'Ò': 'O', 'Ù': 'U',
    'â': 'a', 'ê': 'e', 'î': 'i', 'ô': 'o', 'û': 'u',
    'Â': 'A', 'Ê': 'E', 'Î': 'I', 'Ô': 'O', 'Û': 'U',
    'ä': 'a', 'ë': 'e', 'ï': 'i', 'ö': 'o', 'ü': 'u',
    'Ä': 'A', 'Ë': 'E', 'Ï': 'I', 'Ö': 'O', 'Ü': 'U',
    'ñ': 'n', 'Ñ': 'N',
    'ç': 'c', 'Ç': 'C',
  };

  String normalized = input;
  // Reemplazar cada carácter acentuado con su equivalente sin acento.
  accentMap.forEach((key, value) {
    normalized = normalized.replaceAll(key, value);
  });

  // Opcional: quitar otros caracteres no alfanuméricos si es necesario para el código del cupón.
  // Por ejemplo, para permitir solo letras y números:
  // normalized = normalized.replaceAll(RegExp(r'[^a-zA-Z0-9]'), '');

  return normalized;
}