我的产品代码格式如下:
我需要删除90 *个字符,直到第一个数字不为零,因此输出应为:
所以我所做的是首先删除前导9然后删除零,我想知道是否有一种更简单的方法可以做到这一点,一个班轮?
string productCode = skuid.ToString().TrimStart('9');
productCode = productCode.TrimStart('0');
答案 0 :(得分:8)
或尝试正则表达式:
x = Regex.Replace(x, "^90*", "");
答案 1 :(得分:4)
为什么不......
string productCode = skuid.ToString().TrimStart('9', '0');
如果9000009002
可行且不应为2
而9002
:
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)
您在评论中提到skuid
是int
。你应该这样对待它:
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
会清除所有前导零。