【js】搞清楚slice,substr,substring字符串截取函数

假设 str是个字符串变量,且设置值为"LittleAnn",字符长度是9
那么这三个函数使用方式:

var str="LittleAnn";

str.slice(start,end);
str.substr(start,length);
str.substring(start,end);

相同点:

  1. start为开始位置下标,end为结束位置下标
  2. 下标从0开始计算
  3. 如果第3个参数不传,默认从start截取到字符串最后,包含最后一个字符
  4. 函数名字全是小写字母,容易让人把substrsubstring写成subStr,subString 导致报错

不同点:

1.str.slice(start,end);
(1).2个参数中,如果存在负数将进行转化:转化后下标=负数+字符串总长度,即倒数第几个
(2).正常截取需要end>start(如有负数,进行转换后的),否则返回空字符串
(3).截取长度:end-start(如有负数,进行转换后的),即截取到end的前一位,不包含end

例子1:通过str.slice(start.end)来截取 “Ann” ,有如下种方式:

var str="LittleAnn"; //字符长度是9
str.slice(-3); //"Ann",-3进行转化,-3+9=6
str.slice(6)  //"Ann"

str.slice(-3,str.length); //"Ann" (-3+9,9)即(6,9)
str.slice(6,str.length); //"Ann"  (6,9)

例子2:通过str.slice(start.end)来截取 “Little” ,有如下种方式:

var str="LittleAnn";  //字符长度是9
str.slice(0,6);  //"Little"
str.slice(-str.length,6);  // "Little",下标即(-9+9,6),转化为的下标(0,6)

str.slice(0,-3)  //"Little",转化后的下标(0,-3+9),为(0,6)
str.slice(-str.length,-3);  //"Little",下标即为(-9+9,-3+9),转化后的下标(0,6)

2.str.substr(start,length);
(1)length代表要截取的字符个数
(2)start如果为负数,要进行转化,转化后下标=负数+字符串总长度,即倒数第几个
(3)length要大于0,否则为空字符串

例子3:通过str.substr(start,length)来截取"Ann",有如下种方式:

var str="LittleAnn";  //字符长度是9
str.substr(6,3); //"Ann"
str.substr(-3,3); //"Ann",转化后(-3+9,3)为(6,3)

例子4:通过 str.substr(start,length) 来截取"Little",有如下种方式:

var str="LittleAnn"; //字符长度是9
str.substr(0,6);  //"Little"
str.substr(-9,6); //"Little",转化后 (-9+9,6)即(0,6)

3.str.substring(start,end);
(1)start,end中,当参数有负数时,则变为0
(2)从start和end(如有负数,是转化后的),两个参数中最小的参数开始截取到最大的参数下标,字符串不包含最大参数的下标
(3)截取长度:转化后的end-start,即转化后的最大值减去最小值下标

例子5:通过 str.substring(start,end) 来截取 “Ann”,有如下种方式:

var str="LittleAnn"; //字符长度是9
str.substring(6,str.length); //"Ann",(6,9)
str.substring(str.length,6);// "Ann",会从小的6到大的9去进行截取,(6,9)

例子6:通过 str.substring(start,end) 来截取 “Little” ,有如下种方式:

var str="LittleAnn"; //字符长度是9
str.substring(0,6); //"Little"
str.substring(6,0); //"Little" ,会从小0到大的6进行截取,(0,6)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值