如何在Angular/JavaScript中获取ISO 4217货币代码?
解决Angular/JavaScript中获取ISO 4217货币代码的问题
当然可以!不管是在Angular项目里还是纯JavaScript环境中,都有现成的方案拿到你需要的ISO 4217货币代码(比如EUR、USD),下面分场景给你拆解:
一、Angular项目中的最优方案
你提到的getLocaleCurrencyName()是用来获取货币全称的,Angular其实在@angular/common包中还提供了专门的getLocaleCurrencyCode()函数,就是用来获取对应locale的ISO 4217货币代码的。
使用步骤:
- 首先确保你已经导入了所需的函数和locale数据(如果使用非默认locale的话):
import { getLocaleCurrencyCode, registerLocaleData } from '@angular/common'; // 比如导入英文(美国)的locale数据,其他locale需对应导入 import localeEnUs from '@angular/common/locales/en-US'; // 注册locale数据 registerLocaleData(localeEnUs);
- 在组件或服务中直接调用函数即可:
// 获取美国英语环境下的货币代码 const usdCode = getLocaleCurrencyCode('en-US'); console.log(usdCode); // 输出: "USD" // 获取法语(法国)环境下的货币代码 const eurCode = getLocaleCurrencyCode('fr-FR'); console.log(eurCode); // 输出: "EUR"
这个方法完全贴合Angular的国际化体系,是官方推荐的方案,稳定性和兼容性都有保障。
二、纯JavaScript环境下的方案
如果是脱离Angular的场景,或者你想使用原生API,可以借助浏览器的Intl API(ES6+标准,现代浏览器普遍支持)来获取货币代码:
// 针对指定locale,获取其默认货币的ISO代码 function getCurrencyCode(locale) { const formatter = new Intl.NumberFormat(locale, { style: 'currency' }); return formatter.resolvedOptions().currency; } // 测试示例 console.log(getCurrencyCode('en-US')); // "USD" console.log(getCurrencyCode('de-DE')); // "EUR" console.log(getCurrencyCode('zh-CN')); // "CNY"
兼容性说明:
Intl.NumberFormat在Chrome 24+、Firefox 29+、Edge 12+、Safari 10+都支持,基本覆盖了现代主流浏览器。如果需要兼容非常老旧的浏览器,可以引入@formatjs/intl-numberformat这类polyfill。
内容的提问来源于stack exchange,提问作者Elias Garcia
相关产品推荐
相关产品推荐

