Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式将字符串编号转换为货币_C#_Regex - Fatal编程技术网

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;}