[20210422] js截取字符串 - slice(), substring(), substr() 区别

885

slice(), substring(), substr() 区别

js截取字符串

slice()

string.slice(start, end)
参数描述
start必需。要截取的字符串的起始下标。如果是负数,则数值为string.length + start。例如,-1指的是最后一个字符,-3指的是倒数第三个字符。
end可选。要截取的字符串的终止下标。如果省略改参数,slice()会一直提取到字符串末尾。如果是负数,则数值为string.length + end
  • 两个参数都是位置下标, 两个参数都支持负数,且两参数不会互换位置,始终是先startend,如果区间不存在则返回空字符串''
  • 该方法返回的字符串包括start但不包括end,即[start, end)。
substring()
string.substring(start, end)
参数描述
start必需。要截取的字符串的起始下标。应是非负的整数
end可选。要截取的字符串的终止下标。应是非负的整数
  • 两个参数都应该是非负数,如果startend是负数,则会被转换成0。
  • startend两个参数,会是小的参数作为start,大的参数作为endstartend相等,则会返回空字符串''
  • 如果两个参数中有正小数,则会把该参数向下取整。
  • 如果两个参数有字符串,则会先进行parseInt(),如果转换结果为NaN,则会转换为0。
  • 该方法返回的字符串包括start但不包括end,即[start, end)。
substr()
string.substr(start, length)
参数描述
start必需。要截取的字符串的起始下标。如果是负数,则数值为string.length + start
length可选。要截取的字符串的长度。如果是负数,则会被当做0处理,返回空字符串''
  • 如果由startlength计算得出的字符串长度超过了string的最末端,则截取到最末端即结束。
  • 如果start或者length,那么会去除小数部分取整数部分。
  • 如果两个参数有字符串,则会先进行parseInt(),如果转换结果为NaN,则会转换为0。

ECMAscript 没有对该方法进行标准化,所以不建议使用该方法。

总结

  • slice()substring()的两个参数都是下标,但两者参数对于参数为负数的处理不一样。substring()永远都是小的参数作为start,但slice()永远都是第一个参数作为start
  • substr()对负数的处理同slice(),但slice()的第二个参数是length,表示要截取的字符串的长度。