x量相同后拆分字符串

时间:2012-12-11 12:14:16

标签: c# regex string split

我需要在C#中拆分字符串,如下所示:

字符串是这样的:0000120400567

一开始总是0。在上面的示例中,有六个零后跟120400567。我想拆分我得到最后一部分的字符串120400567

开头的零数量可能会发生变化(最后一个零件号会增加一个数字),这意味着我们可以001245878945,我想要的是1245878945

如何分割此字符串,从而忽略前0或前x个零,并仅获取结束编号?可能是这个数字在开头没有任何零,而数字直接从第一个数字开始......但可能是数字包含8个零而不是2个或更多个数字。

5 个答案:

答案 0 :(得分:23)

string withoutLeadingZeroes = withLeadingZeroes.TrimStart('0');

(或

string withoutLeadingZeroes = Regex.Replace(withLeadingZeroes, "^0*", "");

string withoutLeadingZeroes = new String(
    withLeadingZeroes.SkipWhile(c => c == '0').ToArray());

或......)

答案 1 :(得分:9)

TrimStart是你的朋友。但是,当原始字符串仅包含0时,您需要注意不要以空字符串结尾。

string s = "0000120400567";
s = s.TrimStart('0');
if (s == "")
    s = "0";

答案 2 :(得分:5)

您可以使用int.Parse将String转换为整数。这会丢弃前导零,但当然限于int范围内的字符串(如果你使用它,则为long)。

答案 3 :(得分:4)

为什么不将它转换为int32或long或任何你想要的,然后将其转换为字符串?

int i = int.Parse("0000120400567");
        string s = i.ToString();

答案 4 :(得分:0)

如果字符串中有一系列数字,您可以使用(?:\b(?:0+|(?=[1-9])))来分割该字符串

因此,将0534 000500 35435 040与上述regex分开会以

结束
534 
500
35435 
40

如果它只包含一个数字Regex则不需要,尤其是splitting

但如果您仍想split该字符串,则可以使用(?:^0+|^)

进行此操作