在数字前保留0

时间:2014-12-19 18:44:40

标签: c#

我需要帮助找出逻辑。

我有一个有效的代码,其中代码将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

  

3 个答案:

答案 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 '部分)。