【发布时间】:2025-12-14 12:30:01
【问题描述】:
您好。
想象你得到了一个字符串(来自你无法控制的地方)。在那个字符串中是一个十进制数。您想在该数字上添加逗号(即:将 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);
}
现在我可以将生成的字符串插入到我应该去的原始字符串中。写这个问题的目的是这让我觉得很讨厌,我希望找到更好的方法来处理这个问题。
感谢您的宝贵时间。我将在接下来的一个小时内刷新此内容,并在这段时间内选择一个答案。
【问题讨论】:
标签: c# string parsing formatting c#-2.0