js实现trim
在 JavaScript 中实现 trim 功能
JavaScript 的原生字符串方法 String.prototype.trim() 可以去除字符串两端的空白字符。如果需要手动实现类似功能,可以通过正则表达式或遍历字符串的方式完成。
使用正则表达式实现
正则表达式可以高效匹配字符串两端的空白字符并替换为空字符串:
function trim(str) {
return str.replace(/^\s+|\s+$/g, '');
}
^\s+匹配字符串开头的连续空白字符。\s+$匹配字符串末尾的连续空白字符。g标志表示全局匹配。
遍历字符串实现
通过遍历字符串找到非空白字符的起始和结束位置,截取子字符串:
function trim(str) {
let start = 0;
let end = str.length - 1;
while (start <= end && str[start] === ' ') {
start++;
}
while (end >= start && str[end] === ' ') {
end--;
}
return str.substring(start, end + 1);
}
start从字符串开头向后移动,跳过空白字符。end从字符串末尾向前移动,跳过空白字符。substring截取非空白字符部分。
兼容旧版本浏览器的实现
某些旧版本浏览器可能不支持原生 trim 方法,可以通过扩展 String.prototype 实现:
if (!String.prototype.trim) {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, '');
};
}
性能考虑
正则表达式实现的性能通常优于遍历字符串的方式,尤其是在处理较长字符串时。现代 JavaScript 引擎对正则表达式有高度优化。
扩展功能
如果需要单独去除字符串开头或结尾的空白字符,可以实现 trimStart 和 trimEnd:
function trimStart(str) {
return str.replace(/^\s+/g, '');
}
function trimEnd(str) {
return str.replace(/\s+$/g, '');
}
Unicode 空白字符处理
标准 trim 方法仅处理 ASCII 空白字符(如空格、制表符、换行符等)。如果需要处理 Unicode 空白字符,可以使用更复杂的正则表达式:

function unicodeTrim(str) {
return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
}
\uFEFF是字节顺序标记。\xA0是不间断空格。
这些方法提供了灵活性和兼容性,适用于大多数 JavaScript 环境。






