.net 4.0-从字符串C#中删除字符

本文关键字:删除 字符 字符串 net | 更新日期: 2023-09-27 17:59:56

我有以下格式的产品代码:

  1. 90004002
  2. 90004034
  3. 90012672

我需要删除90*字符,直到第一个不是零的数字,所以输出应该是:

  1. 4002
  2. 4034
  3. 12672

所以我要做的是先去掉前面的9,然后去掉0,我想知道是否有一种更简单的方法,一行?

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

.net 4.0-从字符串C#中删除字符

或尝试regex:

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

好吧,你可以这样写:

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

但老实说,regex在这里可能更干净:

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

您可以为使用正则表达式

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

为什么不。。。。

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

如果9000009002是可能的并且不应该是2而是9002:

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

您在评论中提到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;
}

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

忽略字符串中的第一个9,然后将其解析为int,怎么样?喜欢

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

我认为这适用于您问题中的所有情况,因为解析到int会清除所有前导零。