如何删除前导零

120 c# string

如何使用C#删除字符串中的前导零?

例如,在以下数字中,我想删除所有前导零.

0001234
0000001234
00001234
Run Code Online (Sandbox Code Playgroud)

小智 288

这是您需要的代码:

string strInput = "0001234";
strInput = strInput.TrimStart('0');
Run Code Online (Sandbox Code Playgroud)

  • @avrahamcool它仍然会做它应该做的事情.返回单个零将是一个例外,应该由开发人员处理. (20认同)
  • `strInput.TrimStart('0').PadLeft(1,'0');`将处理`"0000">"0"`. (9认同)
  • 当`strInput ="0000000";`或类似的时候有问题 (6认同)

Mas*_*oke 143

这实际上取决于NVARCHAR的长度,因为上面的一些(特别是那些通过IntXX转换的)方法不适用于:

String s = "005780327584329067506780657065786378061754654532164953264952469215462934562914562194562149516249516294563219437859043758430587066748932647329814687194673219673294677438907385032758065763278963247982360675680570678407806473296472036454612945621946";
Run Code Online (Sandbox Code Playgroud)

像这样的东西会

String s ="0000058757843950000120465875468465874567456745674000004000".TrimStart(new Char[] { '0' } );
// s = "58757843950000120465875468465874567456745674000004000"
Run Code Online (Sandbox Code Playgroud)

  • 当`strInput ="0000000";`或类似的时候有问题.因为它将返回一个空字符串而不是一个零. (16认同)
  • @avrahamcool 可以通过查看字符串的长度来处理,如果修剪后字符串为空,则简单地返回“0”。或者使用 `PadLeft(1, '0')`。 (2认同)

msy*_*ilu 27

避免返回空字符串的代码(当输入类似于"00000"时).

string myStr = "00012345";
myStr = myStr.TrimStart('0');
myStr = myStr.Length > 0 ? myStr : "0";
Run Code Online (Sandbox Code Playgroud)

  • 让我们假设字符串很长,为什么要修剪两次?您可以将修剪后的字符串保存在变量中 (2认同)
  • @avrahamcool,你是什么意思,它在哪里修剪了两次?感谢您的评论。 (2认同)

Ray*_*Ray 23

return numberString.TrimStart('0');

  • 当`numberString ="0000000";`或类似的时候有问题 (4认同)

小智 7

当输入全为 0 时,使用以下命令将返回单个 0。

string s = "0000000"
s = int.Parse(s).ToString();
Run Code Online (Sandbox Code Playgroud)


JK.*_*JK. 5

如果您的数字小于Int32.MaxValue,TryParse有效.这也使您有机会处理格式错误的字符串.对Int64.MaxValueInt64.TryParse也一样.

int number;
if(Int32.TryParse(nvarchar, out number))
{
   // etc...
   number.ToString();
}
Run Code Online (Sandbox Code Playgroud)