使用 .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,如何在文本文件中的每个单词后添加逗号并生成字符串?

如何从 .NET 框架 C# 中的文本框中删除双逗号?

如何从文本文件中用逗号分隔行中的特定行和值

如何使用 Java 中的 PrintWriter 将逗号打印到 .csv 文件?

我可以将 Silverlight 2.0 项目添加到我的 Web 应用程序并仍然以 .NET Framework 2.0 为目标吗?

如何将图像添加到 RSS 2.0 中的项目?