我需要帮助找出逻辑。
我有一个有效的代码,其中代码将string
并找出string
中的每个数字,然后加1。
string str = "";
str = Console.ReadLine();
str = Regex.Replace(
str,
@"\d+",
m => (Double.Parse(m.Groups[0].Value) + 1).ToString()
);
示例:
如果我输入"用户000079从1月2日到2月24日赚了1000美元"。
代码将产生输出:"用户80从1月3日到2月25日制作1001美元"。
问题是,我想在80和3前面保持0(即用户000080从1月3日到2月25日赚1001美元)
我该怎么做?
附加信息:让我澄清一下,这只是一个例子。我想要的只是为字符串中出现的每个数字添加1。因此,如果它意味着UserID,1月31日 - 是的,我仍然希望它们增加1
答案 0 :(得分:5)
这将满足您的需求:
string str = Console.ReadLine();
str = Regex.Replace(
str,
@"\d+",
m => (Double.Parse(m.Groups[0].Value) + 1).ToString().PadLeft(m.Groups[0].Value.Length, '0')
);
答案 1 :(得分:1)
您可以使用ToString格式修复此问题,如下所示:
String x = (50).ToString("D8"); // "00000050"
您可以在此处找到有关此内容的更多信息:msdn
编辑:关于lengte如果你这样做,长度是正确的:
System.Text.RegularExpressions.Regex.Replace(
str,
@"\d+",
m => (int.Parse(m.Groups[0].Value) + 1).ToString("D" + m.Groups[0].Value.Length)
);
答案 2 :(得分:0)
听起来您的用户ID号码不是真正的数字'而是数字字符串。是否可以将ID的表示更改为字符串?
如果您只关注呈现ID时的额外零,则可以使用String.Format
使用Custom Numeric Formats正确呈现数值(具体请参阅&{39; Zero Placeholder '部分)。