使用 .NET 2.0 将逗号添加到文本字符串中的十进制数
Posted
技术标签:
【中文标题】使用 .NET 2.0 将逗号添加到文本字符串中的十进制数【英文标题】:Adding commas to a decimal number which is in a string of text with .NET 2.0 【发布时间】:2009-09-24 18:24:14 【问题描述】:您好。
想象你得到了一个字符串(来自你无法控制的地方)。在那个字符串中是一个十进制数。您想在该数字上添加逗号(即:将 1234567.89 转换为 1,234,567.89),同时保持整个字符串不变。数字前的货币符号会有所不同,但逗号格式不必因文化而异。
在 .NET 中是否有一种简单的方法可以做到这一点?
如果没有简单的方法,我将进一步详细说明我的计划。我们可以使用 string.Substring() 来获取数字,因为它总是在一些静态文本之间。例如:
我们的字符串:
string s1 = "Blah Blah Blah. Total price: $1234567.89; Blah Blah Blah Blah"
我们可以得到这样的价格:
int start = s1.IndexOf("Total price: ") + 13;
int length = s1.IndexOf(";") - start;
string trim = s1.Substring(start, length);
抓住货币字符,剩下的留下:
char curr = trim[0];
string sAmount = s1.Substring(1, s1.Length);
现在我们可以格式化十进制:
decimal dAmount;
if (decimal.TryParse(sAmount, out dAmount))
string formattedPrice = curr + dAmount.ToString("N2");
Console.WriteLine(formattedPrice);
现在我可以将生成的字符串插入到我应该去的原始字符串中。写这个问题的目的是这让我觉得很讨厌,我希望找到更好的方法来处理这个问题。
感谢您的宝贵时间。我将在接下来的一个小时内刷新此内容,并在这段时间内选择一个答案。
【问题讨论】:
【参考方案1】:string input = "Blah Blah Blah. Total price: $1234567.89; Blah Blah Blah Blah";
string output = Regex.Replace(input, @"\d+(\.\d\d)?", match => decimal.Parse(match.Value).ToString("N"));
【讨论】:
【参考方案2】:试试这样的:
String.Format("Total Price: 0:C", dAmount);
编辑:抱歉,咖啡喝多了,快读吧。以上是如何在数字中插入逗号/货币符号的答案。
要回答有关将新数字重新插入旧字符串的问题,正则表达式可能最适合识别字符串中的数字,并在您完成格式化后替换它。我想我需要查看更多有效输入示例来帮助实际的正则表达式。
【讨论】:
【参考方案3】:您可能想查看 System.Globalization 命名空间。
您可以修剪不是数字的开头和结尾字符,然后根据您的 System.Globalization.CultureInfo.CurrentCulture.NumberFormat 等格式化您的字符串。
【讨论】:
【参考方案4】:简单的方法是使用正则表达式查找和替换。
【讨论】:
以上是关于使用 .NET 2.0 将逗号添加到文本字符串中的十进制数的主要内容,如果未能解决你的问题,请参考以下文章
使用 StringBuilder 和 BufferedReader,如何在文本文件中的每个单词后添加逗号并生成字符串?
如何使用 Java 中的 PrintWriter 将逗号打印到 .csv 文件?
我可以将 Silverlight 2.0 项目添加到我的 Web 应用程序并仍然以 .NET Framework 2.0 为目标吗?