我需要在C#中拆分字符串,如下所示:
字符串是这样的:0000120400567
一开始总是0
。在上面的示例中,有六个零后跟120400567
。我想拆分我得到最后一部分的字符串120400567
。
开头的零数量可能会发生变化(最后一个零件号会增加一个数字),这意味着我们可以001245878945
,我想要的是1245878945
。
如何分割此字符串,从而忽略前0或前x个零,并仅获取结束编号?可能是这个数字在开头没有任何零,而数字直接从第一个数字开始......但可能是数字包含8个零而不是2个或更多个数字。
答案 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+|^)