如何将字符串转换为带逗号分隔的十进制格式?附C#实现示例
如何在C#中将数字字符串转换为带逗号分隔的十进制格式?
要实现把数字字符串转换成带千位逗号分隔的十进制格式(比如把12345678.234变成12,345,678.234),我这里有个实用的C#实现方案,用正则配合格式化就能搞定:
using System; using System.Text.RegularExpressions; public class Program { public static void Main() { string strRegex = @"(\d+)"; Regex myRegex = new Regex(strRegex, RegexOptions.None); string inputStr = @"12345678.234"; foreach(Match match in myRegex.Matches(inputStr)) { inputStr = inputStr.Replace(match.Value, string.Format("{0:n}", decimal.Parse(match.Value, System.Globalization.NumberStyles.Any))); } Console.WriteLine(inputStr); // 输出结果: 12,345,678.234 } }
代码工作原理:
- 正则表达式
(\d+)会匹配字符串里的所有连续数字序列,这里会分别命中整数部分12345678和小数部分234 - 对每个匹配到的数字片段,先解析为
decimal类型,再用{0:n}格式字符串进行格式化——这个格式会自动为整数部分添加千位分隔符 - 最后将原字符串中的原始数字片段替换成格式化后的结果,得到符合要求的带逗号分隔的字符串
如果你的输入场景更复杂(比如包含负数、不同地区的小数分隔符等),可以调整正则表达式或者解析时的NumberStyles参数来适配,但针对示例中的场景,这段代码已经可以完美完成任务。
内容的提问来源于stack exchange,提问作者ArfatM
相关产品推荐
相关产品推荐

