Подтвердить что ты не робот

Разделить строку после x количество одного и того же номера

Мне нужно разбить строку на С# следующим образом:

Строка выглядит примерно так: 0000120400567

В начале всегда 0. В приведенном выше примере есть шесть нулей, за которыми следует 120400567. Я хочу разбить строку, чтобы получить последнюю часть 120400567.

Количество нулей в начале может измениться (последний номер детали будет увеличен на одно число), что означает, что мы можем иметь 001245878945, а я хочу 1245878945.

Как я могу разделить эту строку, оставив первое или первое количество нулей и получить только конечный номер? Это может быть так, что число не имеет нуля в начале, и число начинается непосредственно с первого числа... но может быть, что число содержит 8 нулей и 2 или более цифр.

4b9b3361

Ответ 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+|^)