MVC/C# 在字符串中的每个数字后加一个逗号

MVC/C# Put a comma after every number in string

我有一串 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 并且我知道这个问题之前已经以类似的方式被问过但是它在关键方面总是略有不同(例如格式化为数千,不是每个数字或只是不优雅!)。

只使用 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

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

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

考虑到固定的字符串长度,不用lookahead也可以得到同样的结果(更易读,效率更高)

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

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

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

但是我还没有测量过实际性能。