Regex将字符串编号转换为货币

本文关键字:货币 转换 编号 字符串 Regex | 更新日期: 2023-09-27 18:25:41

我有一个字符串文件,其中包含美元金额。我想做的是处理字符串并用实际货币隐藏。

示例:

可能的传入字符串;

80
1000.00
1000.0
-100

所需输出为:;

100.00
1,000.00 
-100.00

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

Regex将字符串编号转换为货币

您所说的实际货币是什么意思还不清楚,但我假设您只想要一个看起来像您发布的样本的字符串。请记住,decimal类型(最适合表示货币的类型)没有任何实际的格式信息。

您必须使用decimal.Parse解析string,然后将值转换回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)

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

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();表示小数的转换。