12

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

字符串是这样的:0000120400567

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

开头的零数量可能会改变(最后一个零件号将增加一个数字),这意味着我们可以拥有001245878945并且我想要的是1245878945.

如何拆分此字符串,去掉前 0 或前 x 数量的零并仅获取结束编号?可能是数字开头没有任何零,并且数字直接从第一个数字开始......但可能是数字包含 8 个零和超过 2 个或更多位数。

4

5 回答 5

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

(或者

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

或者

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

或者 ...)

于 2012-12-11T12:16:40.670 回答
9

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

string s = "0000120400567";
s = s.TrimStart('0');
if (s == "")
    s = "0";
于 2012-12-11T12:21:18.363 回答
5

您可以使用int.Parse将字符串转换为整数。这将删除前导零,但当然仅限于 int 范围内的字符串(或 long,如果您使用它)。

于 2012-12-11T12:17:39.377 回答
4

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

int i = int.Parse("0000120400567");
        string s = i.ToString();
于 2012-12-11T15:47:11.013 回答
0

如果字符串中有一定范围的数字,您可以使用它(?:\b(?:0+|(?=[1-9])))来拆分该字符串

0534 000500 35435 040因此,与上述拆分regex将最终得到

534 
500
35435 
40

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

但是如果你仍然想要split那个字符串,你可以用(?:^0+|^)

于 2012-12-11T12:49:22.567 回答