removeDiacriticsQuran method

String removeDiacriticsQuran(
  1. String input
)

Implementation

String removeDiacriticsQuran(String input) {
  final diacriticsMap = {
    'أ': 'ا',
    'إ': 'ا',
    'آ': 'ا',
    'إٔ': 'ا',
    'إٕ': 'ا',
    'إٓ': 'ا',
    'أَ': 'ا',
    'إَ': 'ا',
    'آَ': 'ا',
    'إُ': 'ا',
    'إٌ': 'ا',
    'إً': 'ا',
    'ة': 'ه',
    'ً': '',
    'ٌ': '',
    'ٍ': '',
    'َ': '',
    'ُ': '',
    'ِ': '',
    'ّ': '',
    'ْ': '',
    'ـ': '',
    'ٰ': '',
    'ٖ': '',
    'ٗ': '',
    'ٕ': '',
    'ٓ': '',
    'ۖ': '',
    'ۗ': '',
    'ۘ': '',
    'ۙ': '',
    'ۚ': '',
    'ۛ': '',
    'ۜ': '',
    '۝': '',
    '۞': '',
    '۟': '',
    '۠': '',
    'ۡ': '',
    'ۢ': '',
  };

  StringBuffer buffer = StringBuffer();
  Map<int, int> indexMapping =
      {}; // Ensure indexMapping is declared if not already globally declared
  for (int i = 0; i < input.length; i++) {
    String char = input[i];
    String? mappedChar = diacriticsMap[char];
    if (mappedChar != null) {
      buffer.write(mappedChar);
      if (mappedChar.isNotEmpty) {
        indexMapping[buffer.length - 1] = i;
      }
    } else {
      buffer.write(char);
      indexMapping[buffer.length - 1] = i;
    }
  }
  return buffer.toString();
}