javascript如何操作字符串_有哪些常用字符串方法

JavaScript字符串不可变,所有方法均返回新字符串;slice推荐替代substring和substr;includes、indexOf等用于查找判断;split与join高频配合使用。

字符串不可变,所有方法都返回新字符串

JavaScript 中的字符串是原始类型,一旦创建就无法修改。所有所谓“操作”实际都是生成新字符串,原字符串保持不变。这点常被初学者忽略,导致 str.toUpperCase() 后忘记赋值,结果还是旧值。

  • str.replace() 只替换第一个匹配项,要全局替换得用正则: str.replace(/a/g, 'b')
  • str.slice()str.substring()str.substr() 行为不同: substr() 已被废弃,slice() 支持负数索引,substring() 会自动交换参数顺序
  • 拼接大量字符串时,arr.join('') 比循环 += 更快,尤其在长文本场景下

提取子串:slice / substring / substr 的区别必须分清

三者都返回子串,但处理负数和参数顺序的方式完全不同,混用容易出错。

const str = 'hello';
str.slice(1, 4);      // 'ell'
str.slice(-4, -1);    // 'ell' ← 负数从末尾计数
str.substring(1, 4);  // 'ell'
str.substring(-4, -1); // '' ← 负数被转为 0
str.substring(4, 1);  // 'ell' ← 自动交换 1 和 4

推荐统一用 slice():语义清晰、支持负索引、不魔改参数,现代代码中已基本替代另两个。

查找与判断:includes / indexOf / startsWith / endsWith

这些方法返回布尔值或索引,适用于条件判断和定位。注意大小写敏感,且 includes() 不支持正则。

  • str.includes('abc') → 布尔值,ES6+,最常用
  • str.indexOf('abc') → 返回首个匹配索引,没找到为 -1,兼容性最好
  • str.startsWith('abc', 2) → 从位置 2 开始检查是否以 'abc' 开头
  • str.endsWith('xyz', 5) → 检查前 5 个字符是否以 'xyz' 结尾

如果需要正则查找(比如忽略大小写),必须用 str.search(/abc/i)str.match(/abc/gi),不能靠上面几个方法。

分割与连接:split() 和 join() 是一对高频搭档

split() 把字符串切为数组,join() 把数组拼回字符串。它们常配合使用,比如清洗空格、去重、格式化。

const csv = 'a, b , c';
csv.split(',').map(s => s.trim()).join('|'); // 'a|b|c'

注意:split('') 可将字符串转为字符数组;但若字符串含 emoji 或代理对(如 ?),split('') 仍可能出错,更安全用 [...str]Array.from(str)

正则作为 split() 参数时(如 split(/\s+/)),能处理多个连续分隔符,这是纯字符串分隔做不到的。