如何使用正则表达式将数字格式化为货币

时间:2018-09-07 04:29:28

标签: c# regex c#-4.0

我正在尝试使用正则表达式将数字格式化为金额格式,如下所示。

dateTime

哪位给我$ 1,23 $ 4,567.00(额外的$)。

我想要下面

df1

请提出正确的建议。

3 个答案:

答案 0 :(得分:6)

看看MSDN文档sample

var input = "1234567.00";
NumberFormatInfo nfi = new CultureInfo( "en-US", false ).NumberFormat;
var currencyValue = decimal.Parse(input);
var output = currencyValue.ToString( "C", nfi );

答案 1 :(得分:2)

Access Denied对您的实际(非正则表达式)问题有正确的答案。这不是您可以轻松实现的,甚至不应该使用正则表达式来完成。有限制。就像问»我如何与Console.WriteLine建立数据库连接?«那是荒谬的。

您可以一次更换,如果您绝对需要,则必须这样做:

Regex.Replace(input, @"^|(\d{3}(?=(\d{3})*(\.|$)))", m => m.Value == "" ? "$" : "," + m.Value);

这将在开头添加$,并相应地插入逗号。它还将忽略区域设置,货币符号和其他答案正确的其他内容。

答案 2 :(得分:-1)

也许是这样的:

//.replace(/(\d)(?=(\d{3})+\b)/g, "$1,").replace(/(.*\d)/g, '$$$1');
var input = "1234567.00";

var commaPattern = @"(\d)(?=(\d{3})+\b)";
var commaReplacement = "$1,";
var output = Regex.Replace(input, commaPattern, commaReplacement);

var dollarPattern = @"(.*\d)";
var dollarReplacement = "$$$1";
output = Regex.Replace(output, dollarPattern, dollarReplacement);

捐款$ 1,234,567.00