js中slice、substr、substring的区别和用法

slice、substr、substring的区别和用法

一、slice

参数 描述
start 可选。规定从字符串或者数组何处开始选取。如果是负数,那么它规定从尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。如果没有指定该参数,则返回自身的一个副本。
end 可选。规定从字符串或者数组何处结束选取。该参数是结束处下标。如果没有指定该参数,那么从 start 到结束的所有元素。如果这个参数是负数,那么它规定的是从尾部开始算起的元素。

注意:

参数范围[start, end)

注意:字符串数组调用时,如果 start大于等于end,返回空字符串或空数组。

	const str = '0123456789'
	const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
	str.slice()				// 0123456789
	str.slice(3)    		// 3456789
	str.slice(3, 6) 		// 345
	str.slice(-3)   		// 789
	str.slice(-4, -1)   	// 678
	str.slice(6, 3)			// ''
	str.slice(3, 3)			// ''
----------------------------------------------------------
	arr.slice()				// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
	arr.slice(3)    		// [3, 4, 5, 6, 7, 8, 9]
	arr.slice(3, 6) 		// [3, 4, 5]
	arr.slice(-3)   		// [7, 8, 9]
	arr.slice(-4, -1)   	// [6, 7, 8]
	arr.slice(6, 3)			// []
	arr.slice(3, 3)			// []

二、substr

参数 描述
start 可选。规定字符串何处开始选取。如果是负数,那么它规定从字符串尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。如果没有指定该参数,则返回字符串自身。
length 可选。返回的子字符串中应包括的字符个数。

注意: 如果 length 为 0 或负数,将返回一个空字符串。

	const str = '0123456789'
	str.substr()			// 0123456789
	str.substr(3)			// 3456789
	str.substr(3, 6)		// 345678
	str.substr(-3)			// 789
	str.substr(-4, -1)		// ''

三、substring

参数 描述
start 可选。一个非负的整数,规定字符串何处开始选取。
stop 可选。一个非负的整数,规定从字符串何处结束选取。该参数是结束处下标。如果没有指定该参数,那么从 start 到字符串结束的所有元素。

注意:

参数范围[start, stop)

  1. 如果 start 或 stop为负数,那么它将被替换为 0。
  2. 如果 start 比 stop大,那么该方法在提取子串之前会先交换这两个参数。
	const str = '0123456789'
	str.substring()			// 0123456789
	str.substring(3)		// 3456789
	str.substring(3, 6)		// 345
	str.substring(-3)		// 0123456789
	str.substring(3, -6)	// 012
	str.substring(3, 3)		// ''

一些简单应用示例

	const str = '0123456789'

	// 指定位置插入字符
	const insertStr = (str, index, changeStr) => {
		return str.substring(0, index) + changeStr + str.substring(index)
	}

	// 指定位置替换字符
	const replaceStr = (str, start, end, changeStr) => {
		return str.substring(0, start) + changeStr + str.substring(end + 1)
	}

	insertStr('0123456789', 3, '欧尼酱')  				// 012欧尼酱3456789
	replaceStr('0123456789', 3, 6, '欧尼酱')				// 012欧尼酱789

你可能感兴趣的:(js基础,javascript)