.NET 5 Blazor WASM 字符串格式货币
.NET 5 Blazor WASM StringFormat Currency
我在英国文化中显示一些货币:
value.ToString("C2", CultureInfo.CreateSpecificCulture("en-GB"));
但是由于我已将我的代码切换到 .NET 5,我得到了以下结果:
GBP124.00
如何通过仍然使用 C0 或 C2 取回 £124.00?
编辑:根据回复补充信息
我在 Blazor WebAssembly 工作。
这里有一个例子:
(fiddle: https://blazorfiddle.com/s/2dyefc8o)
@page "/"
@using System.Globalization
@FormatDefaultFloatCurrency(price)
<br />
@FormatFloatCurrency(price)
<br />
@FormatFloatCurrencyISO(price)
@code {
float price = 4897;
string FormatDefaultFloatCurrency(float value)
{
var regionCode = "en-GB";
return value.ToString("C0", CultureInfo.CreateSpecificCulture(regionCode));
}
string FormatFloatCurrency(float value)
{
var regionCode = "en-GB";
var region = new RegionInfo(regionCode);
var culture = CultureInfo.CreateSpecificCulture(regionCode);
culture.NumberFormat.CurrencySymbol = region.CurrencySymbol;
return value.ToString("C0", culture);
}
string FormatFloatCurrencyISO(float value)
{
var regionCode = "en-GB";
var region = new RegionInfo(regionCode);
var culture = CultureInfo.CreateSpecificCulture(regionCode);
culture.NumberFormat.CurrencySymbol = region.ISOCurrencySymbol;
return value.ToString("C0", culture);
}
}
在 .NET Core 3.1 中(blazorFiddle 使用的版本):
£4,897
£4,897
GBP4,897
我在 .NET 5 中得到的结果:
GBP4,897
GBP4,897
GBP4,897
尽管我无法重现您的问题,但我想我可以帮助您。
您可以使用以下代码段设置货币符号:
var regionCode= "en-GB";
var region = new RegionInfo(regionCode);
var culture = CultureInfo.CreateSpecificCulture(regionCode);
culture.NumberFormat.CurrencySymbol = region.CurrencySymbol;
var currencyString = value.ToString("C2", culture);
此外,如果您需要将货币符号明确设置为三字符代码,您只需更改行
// that results in "£124.00"
culture.NumberFormat.CurrencySymbol = region.CurrencySymbol;
对一个
// that results in "GBP124.00"
culture.NumberFormat.CurrencySymbol = region.ISOCurrencySymbol;
C0 和 C2 return .NET 5 对我来说 124.00 英镑
请在区域设置中检查您的系统货币格式
控制面板 > 地区(选择英国)> 格式 > 高级(或附加设置)> 货币
screenshots
根据 https://github.com/dotnet/runtime/issues/45262,Blazor webAssembly 中的区域性似乎存在问题。
您可以添加
<BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData>
在客户端项目文件 (.csproj) 中,在 PropertyGroup
内
我在英国文化中显示一些货币:
value.ToString("C2", CultureInfo.CreateSpecificCulture("en-GB"));
但是由于我已将我的代码切换到 .NET 5,我得到了以下结果:
GBP124.00
如何通过仍然使用 C0 或 C2 取回 £124.00?
编辑:根据回复补充信息
我在 Blazor WebAssembly 工作。 这里有一个例子:
(fiddle: https://blazorfiddle.com/s/2dyefc8o)
@page "/"
@using System.Globalization
@FormatDefaultFloatCurrency(price)
<br />
@FormatFloatCurrency(price)
<br />
@FormatFloatCurrencyISO(price)
@code {
float price = 4897;
string FormatDefaultFloatCurrency(float value)
{
var regionCode = "en-GB";
return value.ToString("C0", CultureInfo.CreateSpecificCulture(regionCode));
}
string FormatFloatCurrency(float value)
{
var regionCode = "en-GB";
var region = new RegionInfo(regionCode);
var culture = CultureInfo.CreateSpecificCulture(regionCode);
culture.NumberFormat.CurrencySymbol = region.CurrencySymbol;
return value.ToString("C0", culture);
}
string FormatFloatCurrencyISO(float value)
{
var regionCode = "en-GB";
var region = new RegionInfo(regionCode);
var culture = CultureInfo.CreateSpecificCulture(regionCode);
culture.NumberFormat.CurrencySymbol = region.ISOCurrencySymbol;
return value.ToString("C0", culture);
}
}
在 .NET Core 3.1 中(blazorFiddle 使用的版本):
£4,897
£4,897
GBP4,897
我在 .NET 5 中得到的结果:
GBP4,897
GBP4,897
GBP4,897
尽管我无法重现您的问题,但我想我可以帮助您。
您可以使用以下代码段设置货币符号:
var regionCode= "en-GB";
var region = new RegionInfo(regionCode);
var culture = CultureInfo.CreateSpecificCulture(regionCode);
culture.NumberFormat.CurrencySymbol = region.CurrencySymbol;
var currencyString = value.ToString("C2", culture);
此外,如果您需要将货币符号明确设置为三字符代码,您只需更改行
// that results in "£124.00"
culture.NumberFormat.CurrencySymbol = region.CurrencySymbol;
对一个
// that results in "GBP124.00"
culture.NumberFormat.CurrencySymbol = region.ISOCurrencySymbol;
C0 和 C2 return .NET 5 对我来说 124.00 英镑
请在区域设置中检查您的系统货币格式
控制面板 > 地区(选择英国)> 格式 > 高级(或附加设置)> 货币
screenshots
根据 https://github.com/dotnet/runtime/issues/45262,Blazor webAssembly 中的区域性似乎存在问题。
您可以添加
<BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData>
在客户端项目文件 (.csproj) 中,在 PropertyGroup
内