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

为什么JavaScript的.replace()方法无法将.–替换为.00?

错误原因

  • replace()是纯函数,不会修改原始字符串,只会返回替换后的新字符串,你的写法没有将返回值赋值给变量,相当于没有执行替换操作。
  • 调用jQuery的html()方法时,浏览器会自动解析HTML实体,–会被转换成实际的en dash字符(–,Unicode编码为U+2013),它不是普通的半角减号-,所以你匹配–或者普通减号都无法命中目标内容。
  • 直接拿html()还可能带入其他不可见的标签或格式,不如直接取文本内容更稳妥。

解决方案

优先用文本取值+Unicode正则匹配,兼容性最好:

// 取纯文本内容,排除HTML标签干扰
let amount = jQuery("span#product_price").text();
// 用Unicode编码匹配末尾的.en dash,替换为.00
amount = amount.replace(/\.\u2013$/, '.00');

如果需要直接删除后缀,把替换值改成空字符串即可:

amount = amount.replace(/\.\u2013$/, '');

如果不确定字符编码,可以加一行调试代码确认:

// 打印价格最后一位字符的十进制Unicode编码,en dash对应值为8211
console.log(amount.slice(-1).charCodeAt(0));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:15:01