最推荐用 slice() 或 substring() 截取字符串:slice() 支持负数索引且不修改原串,substring() 自动交换参数顺序但不支持负数;日常按字符截取直接用 slice(0, n),需字节截取时应手动计算 utf-8 长度。

JavaScript 中截取字符串指定长度,主要用 substring()、substr()(已废弃)、slice() 和 substring() + length 限制 这几种方式,最推荐用 slice() 或 substring(),安全且语义清晰。
用 slice() 截取前 N 个字符
slice(start, end) 支持负数索引,不会修改原字符串,是现代写法首选:
- 截取前 5 个字符:
"Hello World".slice(0, 5)→ "Hello" - 截取后 3 个字符:
"Hello World".slice(-3)→ "rld" - 超出长度自动截断,不报错:
"Hi".slice(0, 10)→ "Hi"
用 substring() 截取,更容错
substring(start, end) 会自动交换参数顺序(如果 start > end),且不支持负数索引:
-
"Hello World".substring(0, 5)→ "Hello" -
"Hello World".substring(7, 2)等价于.substring(2, 7)→ "llo W" - 传入负数会被转为 0:
"abc".substring(-2, 2)→ "ab"
按字节长度截取?注意中文问题
JS 字符串按 Unicode 字符 计数(不是字节),一个中文字符算 1 个长度。若需按字节截(如适配 UTF-8 存储限制),需手动计算:
- 简单判断:用
encodeURIComponent(str).length估算 UTF-8 字节数 - 精准截取需遍历字符,检查
char.codePointAt(0) > 0xFFFF判断是否为代理对(如 emoji、部分生僻字) - 日常开发中,除非对接后端字节限制,否则直接用
slice(0, n)即可
安全截取:避免越界或空值异常
实际使用建议加一层保护,尤其处理用户输入或可能为空的字符串:
-
str?.slice(0, 10) || ""—— 可选链 + 空值合并 -
String(str).slice(0, 10)—— 强转字符串,防止 number 等类型报错 - 封装小函数:
const truncate = (s, len) => String(s).slice(0, Math.max(0, len));
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











