格式化货币显示货币名称而不是符号

Posted

技术标签:

【中文标题】格式化货币显示货币名称而不是符号【英文标题】:Formatting currencies shows name of currency instead of symbol 【发布时间】:2020-12-07 06:34:16 【问题描述】:

我正在像这样使用Number.prototype.toLocaleString()

5000.70.toLocaleString('en-AU', 
    style: 'currency',
    currency: 'EUR',
    currencyDisplay: 'symbol',
    useGrouping: true
) // "EUR 5,000.70"

预期结果是"5,000.70 €""€5,000.70"

Chrome 中的输出是 "EUR 5,000.70"

【问题讨论】:

尝试使用en-GB 代替en-AU 谢谢,确实有效。不幸的是,然后"AUD" 被错误地显示为A$ 而不是$ 【参考方案1】:

如果您阅读了Intl.NumberFormat() specification,currencyDisplay 的可能值是:

symbol”使用本地化货币符号,例如€,这是默认值, “narrowSymbol”使用窄格式符号(“$100”而不是“US$100”), “code”使用 ISO 货币代码, “name”使用本地化货币名称,例如“dollar”,

所以,看起来只需将currencyDisplay 设置为narrowSymbol 即可实现您想要的:

const x = 5000.70.toLocaleString('en-AU', 
    style: 'currency',
    currency: 'EUR',
    currencyDisplay: 'narrowSymbol',
    useGrouping: true
);

console.log(x); // €5,000.70

【讨论】:

以上是关于格式化货币显示货币名称而不是符号的主要内容,如果未能解决你的问题,请参考以下文章

使用美元符号和逗号格式化货币输入字段

NSNumberFormatter - 获取货币代码的货币符号

显示的货币格式

格式化像货币一样但没有货币符号的双精度值(C#)

使用没有货币代码的货币格式

NSNumberFormatter 货币符号