Несколько способов снять шкуру с этой кошки. Я думаю, что на самом деле я бы полагался на c# способность обрабатывать char как int и манипулировать символами, а не пытаться разобрать int из него, увеличивать его, а затем форматировать обратно
string s = "abcd999";
string ca = s.ToCharArray();
for(int i = ca.Length - 1; i>= 0 && char.IsDigit(ca[i]); i--){
if(ca[i] == '9')
ca[i] = '0';
else {
ca[i]++;
break;
}
}
return new string(ca);
Мы переворачиваем строка в массив символов для легкого манипулирования, а затем пропустить его обратно от конца к началу. Мы хотим прекратить зацикливание, когда мы нажимаем не ди git или начало строки. Тогда логика c считается простой, как ребенок. Если мы находимся на 9, мы go возвращаемся к 0 ("увеличение следующего может быть сделано при следующем проходе l oop), в противном случае мы увеличиваем символ на единицу и выходим:
4
становится 5
, 19
становится 10
становится 20
, abc9999
становится abc9990
, затем abc9900
, затем abc9000
, затем abc0000
, затем l oop выходит на номер не git c