public static void Main(string[] args)
string input = "BG31UNCR70001523774937";
Console.WriteLine($"{nameof(input)}={input}");
string rearranged = input.Substring(4, input.Length - 4) + input.Substring(0, 4);
Console.WriteLine($"{nameof(rearranged)}={rearranged}");
StringBuilder sb = new StringBuilder();
foreach (var @char in rearranged)
if (char.IsLetter(@char))
temp = short.Parse(@char.ToString());
var asciiCoded = sb.ToString();
Console.WriteLine($"{nameof(asciiCoded)}={asciiCoded}");
short checksum = short.Parse(asciiCoded.Substring(0, 1));
Console.WriteLine($"step 0; checksum={checksum}");
for (var i = 1; i < asciiCoded.Length; i++)
Console.WriteLine("---------");
Console.Write($"step {i}; ");
Console.Write($"checksum={checksum}; ");
Console.Write($"checksum = checksum*10 = {checksum}*{10} = ");
Console.Write($"; checksum = checksum+asciiCoded[{i}] = {checksum}+{asciiCoded.Substring(i, 1)} = ");
checksum += short.Parse(asciiCoded.Substring(i, 1));
Console.Write($"; checksum = checksum%97 = {checksum}%97 = ");
Console.WriteLine(checksum);
Console.WriteLine($"Is IBAN? {checksum == 1}");