最推荐使用 slice(),它支持负索引、行为统一且语义清晰;substring() 兼容旧环境但会自动交换参数且不支持负索引;substr() 已废弃,不应在新项目中使用。

JavaScript 中截取字符串最常用、最实用的 API 就是 slice()、substring() 和 substr(),其中只有前两个是现代开发推荐使用的,substr() 已被标准标记为废弃,不应在新项目中使用。
slice(start, end) —— 最推荐的通用方法
行为统一、支持负索引、语义清晰,与数组的 slice 保持一致,是当前首选。
- 参数 start:起始位置(含),可为负数(如 -1 表示最后一个字符)
- 参数 end(可选):结束位置(不含),也为负数时从末尾计算
- 不修改原字符串,始终返回新字符串
- 超出范围的索引会自动截断,不会报错(例如 start 超过长度时返回空串)
substring(start, end) —— 兼容老代码但有隐式规则
适合需要兼容极旧环境的场景,但逻辑不如 slice 直观。
- 两个参数都必须是非负整数;负值会被当作 0 处理
- 如果 start > end,会自动交换两者再截取(比如 substring(5, 2) 等价于 substring(2, 5))
- end 为 undefined 或超出长度时,自动截取到末尾
- 不支持负索引,灵活性较低
substr(start, length) —— 不建议使用
虽然多数浏览器仍能运行,但 ECMAScript 规范已将其列为“遗留特性”,未来可能被移除。
- 第二个参数是截取长度,不是结束位置(这点和 slice/substring 都不同)
- start 可为负数(表示从末尾倒数),但 length 必须 ≥ 0
- 缺乏标准化保证,不同引擎处理边界情况可能存在细微差异
其他相关但非截取类的辅助方法
虽不直接用于“截取”,但在实际字符串处理中常配合使用:
- charAt(index):获取单个字符(比 str[index] 更兼容 IE)
- indexOf(substr) 和 lastIndexOf(substr):定位子串位置,常用来动态确定 slice 的起止索引
- split(separator):按分隔符拆成数组,适合结构化文本(如 URL 参数、CSV 字段)
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











