【问题标题】:MVC/C# Put a comma after every number in stringMVC/C# 在字符串中的每个数字后加逗号
【发布时间】:2015-07-08 10:24:59
【问题描述】:

我有一串 4 个数字:

1234

我想以 MVC 中最优雅的方式将其转换为

1,2,3,4

I've tried this:

codeToSend.ToString("#,#");

但这会输出“1,234”(我真的很期待)。

我怀疑以下内容会在每个数字后加一个逗号,但无济于事。

codeToSend.ToString("#,#,#,#");

I have also tried string.format,但我又面临同样的问题。

var formattedString = string.Format("{0:0,0}", 1234);

因此,最有效的方法是什么?

注意: 数字字符串将始终为 4 位数长 - 并且只有数字。我不想使用Insert,因为这不是很优雅的 IMO,而且我知道这个问题以前曾以类似的方式被问过,但在关键方面总是略有不同(例如格式化为数千,而不是每数字或只是不优雅!)。

【问题讨论】:

    标签: c# asp.net-mvc string format


    【解决方案1】:

    只用string.Join怎么样?

    int i = 1234;
    string.Join(",", i.ToString().ToCharArray()); // 1,2,3,4
    

    如果1234string,则使用;

    string s = "1234";
    string.Join(",", s.ToCharArray()); // 1,2,3,4
    

    string s = "1234";
    string.Join(",", s.ToList()); // 1,2,3,4
    

    【讨论】:

      【解决方案2】:

      这个可能更有效。 (但算不上优雅)

      var target = "1234";
      var result = Regex.Replace(target , @"(\d)(?=.)", "$1,");
      

      考虑到固定的字符串长度,同样的结果可以在没有前瞻的情况下完成(阅读更简单,效率更高)

      var target = "1234";
      var result = Regex.Replace(target, @"(\d)(\d)(\d)(\d)", "$1,$2,$3,$4");
      

      另外,如果你要处理很多这样的值,你应该在使用前编译正则表达式。

       var target = "1234";
       var digitExceptLastRegex = new Regex(@"(\d)(?=.)", RegexOptions.Compiled);
       var result = regex.Replace(target, "$1,");
      

      但我没有测量实际性能。

      【讨论】:

        猜你喜欢
        • 2023-02-01
        • 1970-01-01
        • 2022-01-03
        • 2023-02-03
        • 2017-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多