因为我期待基于语言国家/地区代码作为输入的货币符号。但是,当我输入“沙特阿拉伯”国家/地区时,我会得到一个出乎意料的结果,因为我只期望沙特货币符号,而不是阿拉伯语的所有内容。因此,如果有人知道如何使用与下面提到的相同的代码来自定义货币符号。请帮我解决这个问题。我在下面的代码和图像中提到了代码和结果。
let formated = (new Intl.NumberFormat('ar-SA', { style: 'currency', currency: 'SAR' }).format(value));
我期望货币符号然后是正常的英文数字而不是阿拉伯数字。
(瑞.斯.u200f --> 这是沙特阿拉伯的货币符号 & ٦٠٠٫٠٠ --> 这是需要以正常英文数字显示的数字。请帮忙在 ---> 瑞中显示.S.u200f 0.00 使用上述代码)
let formated = (new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'SAR' }).format(value));
您有 2 个解决方案:
formatCurrency
来自 @angular/common
:import { formatCurrency } from '@angular/common';
[...]
let formated = formatCurrency(value, 'en-US', '\u0631\u002e\u0633\u002e');
CurrencyPipe
:<p>{{ value | currency:'SAR':'\u0631\u002e\u0633\u002e'}}</p>
将显示 2 个解决方案:
世.10.00
(我不确定unicode,但它似乎是正确的)
您需要通过在区域设置后添加 u-nu-latn
告诉格式化程序使用
拉丁编号系统。
这将以阿拉伯语显示货币代码,但以拉丁语显示数字。
这是:
let value = 123.45
let formated = (new Intl.NumberFormat('ar-SA-u-nu-latn', { style: 'currency', currency: 'SAR' }).format(value));
console.log(formated);
//设置英文为数字符号
val currencyFormatSymbols = DecimalFormat("0.00", DecimalFormatSymbols.getInstance(Locale.ENGLISH)).decimalFormatSymbols
val numberFormat = NumberFormat.getCurrencyInstance(currentLocale)
currencyFormatSymbols.currencySymbol = numberFormat.currency.symbol//Set your preferred symbol mostly from the apps current locale.
val formatter: DecimalFormat = numberFormat as DecimalFormat
formatter.decimalFormatSymbols = currencyFormatSymbols
formatter.format(2344.56)
输出: 2,344.56 瑞.斯.u200f