从字符串C#中删除字符

时间:2014-04-25 07:23:31

标签: c# .net-4.0

我的产品代码格式如下:

  1. 90004002
  2. 90004034
  3. 90012672
  4. 我需要删除90 *个字符,直到第一个数字不为零,因此输出应为:

    1. 4002
    2. 4034
    3. 12672
    4. 所以我所做的是首先删除前导9然后删除零,我想知道是否有一种更简单的方法可以做到这一点,一个班轮?

      string productCode = skuid.ToString().TrimStart('9');
      productCode = productCode.TrimStart('0');
      

6 个答案:

答案 0 :(得分:8)

或尝试正则表达式:

x = Regex.Replace(x, "^90*", "");

答案 1 :(得分:4)

为什么不......

string productCode = skuid.ToString().TrimStart('9', '0');

如果9000009002可行且不应为29002

string productCode = skuid.ToString().TrimStart('9').TrimStart('0');

答案 2 :(得分:4)

好吧,你可以这样写:

string productCode = skuid.ToString().TrimStart('9').TrimStart('0');

但说实话,正则表达式在这里可能会更清洁:

string productCode = Regex.Replace(skuid.ToString(), @"^90*", "");

答案 3 :(得分:4)

您可以使用正则表达式

string input = "9000004002";
var output = Regex.Replace(input, @"^90*", ""); 

答案 4 :(得分:4)

您在评论中提到skuidint。你应该这样对待它:

private const int PRODUCT_OFFSET = 90000000;

public void DoStuff() {
    int skuid = 90012672;
    int productCode = GetProductCode(skuid);
}

private int GetProductCode(skuId) {
    return skuId - PRODUCT_OFFSET;
}

答案 5 :(得分:3)

  

我需要删除90 *个字符,直到第一个不是   零

如何忽略字符串中的第一个9,然后将其解析为int?等;

string s = "9000004002";
int i = Int32.Parse(s.Substring(1));
Console.WriteLine(i.ToString()); //4002

我认为这适用于您的问题中的每个案例,因为解析为int会清除所有前导零。