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");
作者最新文章