Fork me on GitHub

substr 和 substring 区别

JavaSript中String对象的两个裁剪字符串方法。

substr(start, length)

裁剪字符串,不改变本身

参数start

开始裁剪的位置。也可以为负数,代表裁剪的开始位置。(从前往后裁剪)

参数length

裁剪的长度。如果小于0当做0处理。

例:

const str = '123456'
// 这里的4 和 -2 其实代表的同一个位置
console.log(str.substr(4, 2)) // '56'
console.log(str.substr(-2, 2)) // '56'
console.log(str.substr(-2)) // '56'

// 特殊使用
console.log(str.substr()) // '123456'
console.log(str.substr(-2, -1)) // ''
console.log(str.substr(99, 99)) // ''
console.log(str.substr(-99, 99)) // '123456'

substring(start, stop)

裁剪字符串,不改变本身

参数start

开始裁剪的位置。如果小于0当做0处理。

参数stop

裁剪结束的位置。如果小于0当做0处理。当前位置字符(str.charAt(stop))不会包含在裁剪出的子串中,前提是stop值必start大。

注 :

  1. 如果当前位置和开始位置一样,则裁剪出的字符串为空。
  2. substring(start, stop)和substring(stop, start) 效果一样。两个参数互换位置,裁剪出的值是一样的。
  3. 如果只传一个参数,则默认裁剪到尾部。和substr传单个参数效果一样。

例:

const str = '123456'

console.log(str.substring(4, 2)) // '34'
console.log(str.substring(2, 4)) // '34'
console.log(str.substring(1)) // '23456'
console.log(str.substring(-2)) // '123456'

// 特殊使用
console.log(str.substring(-1, -2)) // ''