JavaScript 处理 UTF-8 编码空格:解决 charCode 160 问题
作者:半夏时间:2026-10-24 09:28:41浏览:167
本文介绍在JavaScript中处理UTF-8编码字符串时,正则表达式\s无法识别Unicode空格(charCode 160)的问题。通过结合正则替换与递归逻辑,实现了对标准空格及特殊空格的完整去除,确保跨编码环境下的字符串trim功能正常。
UTF-8编码下的空格处理难题
当JavaScript脚本采用Unicode编码时,使用正则表达式\s即可移除所有空白字符;然而,若脚本采用UTF-8编码,正则表达式将失效,无法处理Unicode编码值为160的空格字符。
正则与递归结合的解决方案
解决方案首先利用正则表达式移除编码为32的标准空格,随后通过递归方法进一步清除字符串两端的Unicode空格。
JavaScript实现代码
具体实现代码如下:
/** 去字符两端空格 开始
*@author 敖士伟
*@version v1.0
*@date 2009/11/14 22:51
*/
String.prototype.trim = function() {
var r = this.replace(/(^\s*)|(\s*$)/g, "");
r = Lremoveblank(r);
r = Rremoveblank(r);
return r;
}
function Lremoveblank(s) {
if (s.length == 1 && s.charCodeAt(0) == 160)
return "";
if (s.charCodeAt(0) == 160) {
s = s.substr(1, s.length - 1);
return removeblank(s);
}
else {
return s;
}
}
function Rremoveblank(s) {
if (s.length == 1 && s.charCodeAt(0) == 160)
return "";
if (s.charCodeAt(s.length-1) == 160) {
s = s.substr(0, s.length - 1);
return Rremoveblank(s);
}
else {
return s;
}
}
//--去字符两端空格 结束
//e.g.
var a = " a ";
alert("b" + a.trim() + "b");作者最新文章
JavaScript闭包与类(Class)的区别及适用场景对比
2026-11-05 15:48:57
JavaScript入门要学ES6吗?let与箭头函数等新特性解析
2026-11-05 14:49:16
JavaScript 8种数据类型详解:基本类型与引用类型的区别
2026-11-05 14:25:15
怎么在JavaScript中使用async/await优化Ajax异步流程
2026-11-05 13:56:15
JavaScript replace回调函数实现动态正则替换逻辑
2026-11-05 13:52:13
