我正在尝试使用正则表达式将数字格式化为金额格式,如下所示。
dateTime
哪位给我$ 1,23 $ 4,567.00(额外的$)。
我想要下面
df1
请提出正确的建议。
答案 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