repairSpecificFields function

String repairSpecificFields(
  1. String line
)

Implementation

String repairSpecificFields(String line) {
  if (line.length != 44) return line; // safety check

  // Fix nationality field (index 10–13)
  final nat = line.substring(10, 13).split('').map((c) {
    switch (c) {
      case '0': return 'O';
      case '1': return 'I';
      case '5': return 'S';
      case '8': return 'B';
      case '6': return 'G';
      default: return c;
    }
  }).join();


  // Fix personal number field (index 28–42)
  final personalRaw = line.substring(28, 42);
  final digits = personalRaw.replaceAll(RegExp(r'(?<=\d)<(?=\d)'), ''); // remove `<` only between digits
  final padded = digits.padRight(14, '<').substring(0, 14);

  // Build and return new line
  final result =  line.substring(0, 10) + nat + line.substring(13, 28) + padded + line.substring(42);
  // log(" repairSpecificFields\n$line\n$result");
  return result;
}