You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Intl.NumberFormat或类似工具仅获取指定货币符号?

获取仅货币符号的实现方案

Intl.NumberFormat本身没有直接返回纯货币符号的配置项,但可以通过以下两种可靠方法实现需求:

方法1:用formatToParts精准提取货币符号

Intl.NumberFormat的formatToParts方法会把格式化后的内容拆分为结构化的部分数组,我们只需筛选出类型为currency的部分就能拿到纯符号,这种方法不受不同地区符号位置影响(有的在数字前,有的在数字后),兼容性和可靠性都很强。

代码示例:

function getCurrencySymbol(currency, locale = 'en-EN') {
  const formatter = new Intl.NumberFormat(locale, {
    style: 'currency',
    currency: currency,
    minimumFractionDigits: 0,
    maximumFractionDigits: 0
  });
  const parts = formatter.formatToParts(0);
  const currencyPart = parts.find(part => part.type === 'currency');
  return currencyPart ? currencyPart.value : '';
}

// 测试调用
console.log(getCurrencySymbol('EUR', 'en-EN')); // 输出 "€"
console.log(getCurrencySymbol('USD', 'en-US')); // 输出 "$"
console.log(getCurrencySymbol('JPY', 'ja-JP')); // 输出 "¥"

方法2:从格式化结果中剥离数字

如果追求代码简洁,也可以格式化一个0值,再去掉结果里的数字和空格部分。不过这种方法依赖于格式化后的字符串结构,不如方法1通用,但对于大部分常见场景足够用:

function getCurrencySymbol(currency, locale = 'en-EN') {
  const formattedStr = new Intl.NumberFormat(locale, {
    style: 'currency',
    currency: currency,
    minimumFractionDigits: 0,
    maximumFractionDigits: 0
  }).format(0);
  return formattedStr.replace(/[0\s]/g, '');
}

// 测试调用
console.log(getCurrencySymbol('EUR', 'en-EN')); // 输出 "€"

优先推荐方法1,能避免因地区格式差异导致的异常。

内容的提问来源于stack exchange,提问作者user19697663

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 21:45:36