字符串截取 slice,substr,substring 的区别
一 只传递一个参数时候
let str = '0123456';
str.slice(5); //'56'
str.substr(5); // '56'
str.substring(5); // '56'
str.slice(-2); // '56'
str.substr(-2); // '56'
str.substring(-2);//'0123456'
总结:当传递一个参数时候,slice 和 substr表现一致,都是取初始index,返回该index到末尾的字符串。而substring 出现负数,会自动转化为0
二 传递两个参数时候
let str = '0123456';
str.slice(1,5); // '1234'
str.substr(1,5);// '12345'
str.substring(1,5);// '1234'
str.slice(1,-2); // '1234'
str.substr(1,-2); // '' -2会转化为0,表示从index为1开始,后面取0个数
str.substring(1,-2); // '0' -2会转化为0,并将初始值设为更小的一个值 (0,1)
总结:当传两个参数时候
-
str.slice(x,y)
截取[x,y) 区间内的值,当存在负值,可通过反向逆推转化成正数,比如上例中 -2 => 5 ,str.slice(1,-2) = str.slice(1,5);
注意,当转化后,如果末尾值小于初始值,则 返回'',比如 str.slice(2,0)
即:slice 第一个参数为初始截取位置为闭区间,第二个参数为截取的末尾位置为开区间,当存在负数时,可通过位置转化为正值,当 转化之后 初始值大于末尾值的,则返回空 -
str.substr(x,y)
x为初始值,当为负数时可通过位置比较转化为正数, y为截取的长度。当y大于能够截取的长度时候,会截取当前初始值到字符串末尾的字符串,即str.subStr(4,100) === str.substr(4);当y为0或者负数时,表示截取位数为0,返回 '' -
str.substring(x,y)
x,y中有负数的直接转化为0,然后 以小的数为初始点,大的数为截止点,前闭后开
三 总结
slice,substr,substring 都不会改变原来字符串,仅返回截取的字符串
分类:
javascript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具