操作字符串还在用substr吗,试试slice吧

59 阅读1分钟

String.prototype.substr() 是一个非标准方法,虽然很多浏览器依然支持它,但它已经被 ECMAScript 标准移除(deprecated),所以在现代项目中建议避免使用。

你可以使用 substring()slice() 来替代它。


🔍 slice() 方法详解

✅ 语法:

str.slice(beginIndex[, endIndex])
参数类型说明
beginIndexNumber起始位置(包含该索引)
endIndex(可选)Number结束位置(不包含该索引)

✅ 返回值:

返回从 beginIndexendIndex(不含)的字符串子串。


🔧 特性:

  • 支持负数索引:从字符串尾部开始计数,-1 表示最后一个字符。
  • 不改变原字符串:返回的是新字符串。
  • 可处理越界索引:不会抛异常,会自动处理。

✅ 常见示例

🎯 1. 提取前几个字符:

const str = "Hello, world!";
console.log(str.slice(0, 5)); // "Hello"

🎯 2. 去掉最后一个字符:

const str = "abcde";
console.log(str.slice(0, -1)); // "abcd"

🎯 3. 提取最后三个字符:

const str = "abcdef";
console.log(str.slice(-3)); // "def"

🎯 4. 复制整个字符串:

const str = "copy me";
console.log(str.slice()); // "copy me"

🎯 5. 超出范围也不报错:

const str = "short";
console.log(str.slice(0, 100)); // "short"

🚫 常见误区:

slice(start, length)

很多人从 substr 习惯过来,会写成:

str.slice(0, 5) // ✅ 正确:表示索引0到索引5(不含)
str.substr(0, 5) // ❌ 表示从0开始取5个字符

🧠 记住:slice() 的第二个参数是 结束索引(不含) ,不是长度!


📌 使用场景总结:

场景推荐用法
获取前 N 个字符str.slice(0, N)
去掉最后 N 个字符str.slice(0, -N)
获取最后 N 个字符str.slice(-N)
提取中间一段str.slice(start, end)

如果你习惯操作数组,其实数组的 slice() 语法和行为也是一样的,易于记忆。