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

如何移除NumberFormat格式化货币时的特殊空白字符?

移除货币格式化中的特殊空白字符

你遇到的问题是\s正则表达式无法匹配到目标特殊空白字符——Java里的\s仅覆盖普通空格、制表符、换行符等常见空白(对应字符集[\t\n\x0B\f\r ]),但不包含你提到的这种特殊空白(ASCII值-96实际对应扩展ASCII的0xA0,也就是Unicode的\u00A0非-breaking空格)。

这里提供两种直接可行的解决方法:

方法1:精确匹配特殊空白字符

既然已经明确该字符的编码,直接指定它进行替换即可:

NumberFormat numberFormat = NumberFormat.getCurrencyInstance(getLocale());
return numberFormat.format("-123.45").replace("\u00A0", "");

也可以通过ASCII值转换的方式实现:

NumberFormat numberFormat = NumberFormat.getCurrencyInstance(getLocale());
return numberFormat.format("-123.45").replace(String.valueOf((char) 160), "");

方法2:匹配所有Unicode空白类字符

如果担心后续出现其他类型的特殊空白,可以用Unicode属性匹配所有空格类分隔符,覆盖范围更全面:

NumberFormat numberFormat = NumberFormat.getCurrencyInstance(getLocale());
return numberFormat.format("-123.45").replaceAll("\\p{Zs}", "");

\p{Zs}会匹配所有Unicode定义的空格类字符,包括普通空格、非-breaking空格、窄空格等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:25:59