簡體   English   中英

.NET 5 Blazor WASM StringFormat 貨幣

[英].NET 5 Blazor WASM StringFormat Currency

我展示了一些英國文化中的貨幣:

value.ToString("C2", CultureInfo.CreateSpecificCulture("en-GB"));

但由於我已將代碼切換到 .NET 5,因此得到以下結果:

GBP124.00

我怎樣才能通過仍然使用C0C2取回124.00 英鎊

編輯:根據回復補充信息

我在 Blazor WebAssembly 工作。 這里有一個例子:

(小提琴: 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

根據https://github.com/dotnet/runtime/issues/45262 ,Blazor webAssembly 中的文化似乎存在問題。

你可以加

<BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData>

PropertyGroup內的客戶端項目文件 (.csproj) 中

盡管我無法重現您的問題,但我想我可能會為您提供幫助。

您可以使用以下代碼段來設置貨幣符號:

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;

在 .NET 5 中,C0 和 C2 都為我返回 124.00 英鎊

請在區域設置中檢查您的系統貨幣格式

控制面板 > 地區(選擇英國)> 格式 > 高級(或附加設置)> 貨幣

截圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM