C# 正则表达式将字符串编号转换为货币
我有一个保存美元金额的字符串文件。我要做的是处理字符串并转换为实际货币 例如: 可能传入的字符串C# 正则表达式将字符串编号转换为货币,c#,regex,C#,Regex,我有一个保存美元金额的字符串文件。我要做的是处理字符串并转换为实际货币 例如: 可能传入的字符串 80 1000.00 1000.0 -100 期望输出为: 100.00 1,000.00 -100.00 如何使用正则表达式格式化字符串并将其转换为所需的输出?不太清楚您所说的实际货币是什么意思,但我假设您只需要一个看起来像您发布的示例的字符串。请记住,decimal类型(最适合表示货币的类型)没有任何实际的格式信息 您必须使用decimal.parse解析字符串,然后将值转换回字符串,以将
80
1000.00
1000.0
-100
期望输出为:
100.00
1,000.00
-100.00
如何使用正则表达式格式化字符串并将其转换为所需的输出?不太清楚您所说的实际货币是什么意思,但我假设您只需要一个看起来像您发布的示例的字符串。请记住,
decimal
类型(最适合表示货币的类型)没有任何实际的格式信息
您必须使用decimal.parse
解析字符串
,然后将值转换回字符串
,以将其转换为所需格式
例如:
public string Format(string input)
{
decimal value = decimal.Parse(input);
return value.ToString("#,#.00");
}
// usage: Format("1000.0")
示例:
但是,如果您处理的是货币,则可以使用C
格式说明符:
value.ToString("C");
这将为您的示例输入输出以下内容:
80.00美元
$1,000.00
$1,000.00
($100.00)
Microsoft.Net Framework中没有真正的货币转换器,因此您必须在提供的约束范围内工作,即十进制
。最接近默认为货币的十进制数的是:
decimal amount = 0.00m
末尾的m
声明此小数将表示货币。如果加上它,将提供基本的四舍五入,就好像它是钱一样
然而,最简单的方法是安德鲁·惠特克如何进行转换。我要补充的唯一一点是,当您利用:
value.ToString("#,##0.00"); // Output: 0.96
value.ToString("#,#.00"); // Output .96
value.ToString("0.##"); // Output 0.6
使用ToString()澄清转换编码>小数。为什么“80 1000.00”变为“100.00”?80发生了什么事?80
?C#中没有货币格式化程序吗?有一个C#格式化程序,你知道你想要一个正则表达式来解决这个问题吗?现在您有两个问题:)是的,正确,我希望输出看起来像我上面给出的示例。但是如果字符串是189.6,那么代码会把它转换成189.60吗?字符串也可能是负数,我希望它看起来像-189。60@RamseyK:是的,我发布的功能满足了这些要求。我添加了一个你可以玩的例子。@AndrewHitaker我在回答中澄清了你的ToString()
,但尽量不重复或超越你的问题。回答得好。谢谢格雷格。我会记住这些的。Appreciated@Andrew惠特克,嗨,安德鲁,希望你不介意我再问一个问题。如何在字符串的开头和结尾添加/插入双引号。例如-1000.00我希望它看起来像-1000.00“谢谢我不是Andrew,但最简单的方法是串接:string content=@”/“+Format(value)+@/”代码>这将是最简单的,您需要使用/
来逃避它。谢谢:)这看起来会像这样吗?我需要将其转换为内联C代码:公共字符串AddQuote(字符串输入){string content=@”/“+Format(input)+@”/“;return content;}