正则表达式将字符串数转换为货币

时间:2014-10-06 20:12:27

标签: c# regex

我有一个持有美元金额的字符串。我想要做的是处理字符串并以实际货币进行隐蔽。

示例:

可能的传入字符串;

80
1000.00
1000.0
-100

所需的输出是;

100.00
1,000.00 
-100.00

如何使用正则表达式格式化字符串并将其转换为我想要的输出?

2 个答案:

答案 0 :(得分:2)

实际货币的含义并不是很清楚,但我假设您只想要一个类似于您发布的样本的字符串。请注意,decimal类型(最适合代表货币的类型)不具有任何实际的格式信息。

您必须使用string解析decimal.Parse,然后将值返回转换为string,以使其达到所需的格式

例如:

public string Format(string input)
{
    decimal value = decimal.Parse(input);

    return value.ToString("#,#.00");
}

// usage: Format("1000.0")

示例: https://dotnetfiddle.net/P7psPC

但是,如果您正在处理货币,则可以使用C格式说明符:

value.ToString("C");

这将为您的示例输入输出以下内容:

$80.00
$1,000.00
$1,000.00
($100.00)

答案 1 :(得分:0)

Microsoft .Net Framework中没有真正的货币转换器,因此您必须在提供的约束内工作,即decimal。您最接近decimal默认为 money 的将是:

decimal amount = 0.00m

最后m声明此小数代表金钱。添加时会提供基本的四舍五入,好像是钱。

然而,最简单的方法是Andrew Whitaker如何进行转换。我唯一要补充的是,当你利用:

value.ToString("#,##0.00"); // Output: 0.96
value.ToString("#,#.00");   // Output .96
value.ToString("0.##");     // Output 0.6

澄清使用ToString();进行小数转换。