javascript的slice()方法提取子串且不修改原字符串,参数为起始(含)和结束(不含)索引,支持负数索引(从末尾计),省略结束索引则截取至末尾,超出长度返回空字符串,与substring、substr有关键区别。

JavaScript 的 slice() 方法用于提取字符串的子串,不修改原字符串,返回一个新字符串。用得好很顺手,但几个细节不注意容易出错。
参数含义要记清:包前不包后
第一个参数是起始索引(包含),第二个参数是结束索引(不包含)。比如 "abcde".slice(1, 3) 返回 "bc",不是 "bcd"。
- 索引从 0 开始,
slice(0, 1)取第一个字符 - 省略第二个参数,表示截取到末尾:
"hello".slice(2)→"llo" - 若起始位置超出字符串长度,返回空字符串:
"hi".slice(5)→""
负数索引从末尾算起
负数不是报错,而是从字符串末尾倒着数:-1 是最后一个字符,-2 是倒数第二个……
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
-
"hello".slice(-2)→"lo" -
"hello".slice(-4, -1)→"ell"(从倒数第 4 个到倒数第 1 个,不包含后者) -
"hello".slice(-10)会自动截断为slice(0),不会报错
原字符串不受影响
slice() 是纯函数式操作,它不会改变原始字符串,也不会隐式输出结果。
- 写
str.slice(2, 4)不会打印或显示任何内容 - 必须显式赋值或传给其他操作,例如:
let part = str.slice(2, 4); - 常用于链式处理,如
filename.slice(filename.lastIndexOf('.') + 1)提取扩展名
和 substring、substr 的关键区别
别混用。尤其注意:
-
substring()遇到负数会转成 0;slice()保留负数语义 -
substr()第二个参数是“长度”,不是“结束位置”,且已被标准标记为废弃 - 当起始大于结束时,
substring()会自动交换参数;slice()则返回空字符串
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










