Разделить строку после x количество одного и того же номера
Мне нужно разбить строку на С# следующим образом:
Строка выглядит примерно так: 0000120400567
В начале всегда 0
. В приведенном выше примере есть шесть нулей, за которыми следует 120400567
. Я хочу разбить строку, чтобы получить последнюю часть 120400567
.
Количество нулей в начале может измениться (последний номер детали будет увеличен на одно число), что означает, что мы можем иметь 001245878945
, а я хочу 1245878945
.
Как я могу разделить эту строку, оставив первое или первое количество нулей и получить только конечный номер? Это может быть так, что число не имеет нуля в начале, и число начинается непосредственно с первого числа... но может быть, что число содержит 8 нулей и 2 или более цифр.
Ответы
Ответ 1
string withoutLeadingZeroes = withLeadingZeroes.TrimStart('0');
(или
string withoutLeadingZeroes = Regex.Replace(withLeadingZeroes, "^0*", "");
или
string withoutLeadingZeroes = new String(
withLeadingZeroes.SkipWhile(c => c == '0').ToArray());
или...)
Ответ 2
TrimStart
- ваш друг. Тем не менее, вам нужно быть осторожным, чтобы вы не попали в пустую строку, когда ваш оригинал состоит только из 0.
string s = "0000120400567";
s = s.TrimStart('0');
if (s == "")
s = "0";
Ответ 3
Вы можете использовать int.Parse
для преобразования String в Integer. Это приведет к падению ведущих нулей, но, конечно, ограничено строками в пределах интервала int (или длинным, если вы его используете).
Ответ 4
Почему бы вам не преобразовать его в int32 или long или что угодно, а затем преобразовать его в строку?
int i = int.Parse("0000120400567");
string s = i.ToString();
Ответ 5
Если у вас есть ряд чисел в строке, вы можете использовать (?:\b(?:0+|(?=[1-9])))
для разделения этой строки
Таким образом, расщепление 0534 000500 35435 040
с указанным выше regex
заканчивается
534
500
35435
40
Если он будет содержать только одно число regex
, не требуется, и особенно splitting
it
Но если вы все еще хотите split
эту строку, вы можете сделать это с помощью (?:^0+|^)