编程语言
首页 > 编程语言> > c# – 将逗号添加到带有.NET 2.0的文本字符串中的十进制数字

c# – 将逗号添加到带有.NET 2.0的文本字符串中的十进制数字

作者:互联网

问候.

想象一下,你已经获得了一个字符串(来自某个你无法控制的地方).在该字符串中是十进制数.您希望将逗号(即:将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);
}

现在我可以将生成的字符串插回到我应该去的原始字符串中.写这个问题的关键在于,这对我来说非常讨厌,我希望找到一个更好的方法来解决这个问题.

谢谢你的时间.我将在接下来的一个小时内对此进行更新,并将在该时间内选择答案.

解决方法:

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"));

标签:c,parsing,formatting,c-2-0,string
来源: https://codeday.me/bug/20190722/1498940.html