js 实现trim
实现 JavaScript 的 trim 功能
在 JavaScript 中,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.slice(start, end + 1);
}
- 从字符串开头遍历,找到第一个非空白字符的位置。
- 从字符串末尾遍历,找到最后一个非空白字符的位置。
- 使用
slice截取有效部分。
兼容性扩展
如果需要兼容更多空白字符(如制表符、换行符等),可以调整正则表达式:
function trim(str) {
return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
}
\s匹配常规空白字符。\uFEFF和\xA0分别处理 BOM 和非断空格。
性能优化
对于长字符串,正则表达式的性能通常优于手动遍历。但在极端情况下,可以结合两种方法优化:
function trim(str) {
if (str.length > 1000) {
let start = 0;
let end = str.length - 1;
while (start <= end && str[start] === ' ') start++;
while (end >= start && str[end] === ' ') end--;
return str.slice(start, end + 1);
}
return str.replace(/^\s+|\s+$/g, '');
}
- 根据字符串长度选择实现方式。
- 长字符串使用遍历,短字符串使用正则表达式。







