repairSpecificFields function
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;
}