当零的数量可以更改时删除填充

时间:2014-08-21 21:35:34

标签: c# regex

我有一个长度为12位的字符串

它以' PSS1'

开头

' PSS100000300'

所以我需要提取' 300'

我不能抓住最后3位数,因为数字可以增加说

' PSS100010300'

并且需要提取的值为' 10300'

3 个答案:

答案 0 :(得分:4)

如果我理解正确,你想先跳过前4个字符,然后在第一个非零字符前滚动。试试这个:

s = new string(s.Substring(4).SkipWhile(x => x == '0').ToArray());

或者,正如@Blorgbeard建议的那样,

s = int.Parse(s.Substring(4)).ToString();

这些方法之间存在细微差别。如果您传递"PSS100000000",则第一个返回空字符串,第二个返回"0"。不确定预期的结果。

答案 1 :(得分:3)

试试这个:

s = Convert.ToInt32(s.Replace("PSS1", string.Empty)).ToString()

答案 2 :(得分:0)

使用int.Parse的唯一问题是,如果您碰巧碰到这种情况并且您所追求的价值不是数字 - 请说它可能有一个字符。 。int.Parse会抛出Exception

这就是我这样做的原因:

string fullPSS1String = "PSS10000#001";
string afterPSS1 = fullPSS1String.Substring(4).TrimStart('0');

我不是挑剔,只是想要考虑所有情况。我知道第一个选项不会抛出Exception ...但我觉得这样做更直接。