我有一个长度为12位的字符串
它以' PSS1'
开头' PSS100000300'
所以我需要提取' 300'
我不能抓住最后3位数,因为数字可以增加说
' PSS100010300'
并且需要提取的值为' 10300'
答案 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
...但我觉得这样做更直接。