Js:【详细】splice()方法、split()方法、replace()方法和 join()方法的区别

本文详细介绍了JavaScript中四个重要的字符串和数组操作方法:splice()用于数组的插入、删除和替换;split()用于根据分隔符分割字符串成数组;replace()用于字符串的替换,包括捕获组的使用;join()则用于将数组元素组合成字符串。这些方法在日常编程中有着广泛的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

splice()方法、split()方法、replace()方法和join()方法的区别

splice() 的主要用途是向数组的中部插入项,但使用这种方法的方式则有如下 3 种:

(1) 删除:可以删除任意数量的项,只需指定 2 个参数:要删除的第一项的位置和要删除的项数。
例如, splice(0,2) 会删除数组中的前两项。

(2)插入:可以向指定位置插入任意数量的项,只需提供 3 个参数:起始位置、0(要删除的项数)和要插入的项。如果要插入多个项,可以再传入第四、第五,以至任意多个项。
例如,splice(2,0,“red”,“green”) 会从当前数组的位置 2 开始插入字符串 “red” 和 “green” 。

(3)替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定 3 个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。
例如,splice (2,1,“red”,“green”) 会删除当前数组位置 2 的项,然后再从位置 2 开始插入字符串"red" 和 “green” 。

splice() 方法始终都会返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除任何项,则返回一个空数组)。


split()方法可以基于指定的分隔符将一个字符串分割成多个子字符串,并将结果放在一个数组中。分隔符可以是字符串,也可以是一个 RegExp 对象(这个方法不会将字符串看成正则表达式)。 split() 方法可以接受可选的第二个参数,用于指定数组的大小,以便确保返回的数组不会超过既定大小。

var colorText = "red,blue,green,yellow";
var colors1 = colorText.split(","); //["red", "blue", "green", "yellow"]
var colors2 = colorText.split(",", 2); //["red", "blue"]
var colors3 = colorText.split(/[^\,]+/); //["", ",", ",", ",", ""]

replace()方法主要用于字符串中符合匹配条件的字串替换成其他的字符串,返回替换后的字符串,且原字符串不变
语法:

var newStr = str.replace(regexp|substr, newSubStr|function)

参数1:匹配条件:可以是正则表达式(regexp)或者字符串(substr)
tips:若参数1是字符串或者是不带全局标志g的正则,则只匹配一次
匹配一次是什么意思呢?例如:

 var  str = '#home#home'
   var pattern1= 'home'
   var newStr1 = str.replace(pattern1, 'home1') //得到newStr1的结果为"#home1#home"
var  str = '#home#home'
   var pattern2= /home/
   var newStr2 = str.replace(pattern2, 'home1') //得到newStr2的结果为"#home1#home"

若要实现多次匹配,方法如下:
1.带有全局标志g的正则

var  str = '#home#home'
	var pattern3= /home/g
	var newStr3= str.replace(pattern3, 'home1') //得到newStr3的结果为"#home1#home1"

2.有捕获组的情况下

var str = "John Smith";
	var pattern4 = /(\w+)\s(\w+)/;
	var newStr4= str.replace(pattern4, 'zyp') //得到newStr4的结果为"zyp"

上面 针对参数1pattern是捕获组的情况,参数2是字符串,那么该字符串替换第一个捕获组,其余的捕获组被空字符串替换,所以当参数1pattern中存在捕获组的情况下,参数2一般是一个函数或者特殊变量名(这样才不会出现其余的捕获组被空字符串所替换掉)

有捕获组情况时,参数2一般为函数或特殊变量名
(1)参数2的字符串中可以插入以下特殊的变量名

$$ :插入一个 “$”。
$& :插入匹配的子串。
$` :插入当前匹配的子串左边的内容。
$’ :插入当前匹配的子串右边的内容。
$n :假如第一个参数是 RegExp对象,并且 n 是个小于100的非负整数,那么插入第 n 个括号匹配的字符串。索引是从1开始。
最常见的特殊变量名是 $n:

var str = "John Smith";
   var pattern5 = /(\w+)\s(\w+)/;
   var newStr5= str.replace(pattern5, '$2 $1') //得到newStr5的结果为"Smith John"

(2)参数2为函数,函数可能有以下几个参数

a. match: 每次匹配得到的字符串。如果正则表达式中含有全局标志g的话,那么函数每次匹配到结果函数都会执行一次,即函数会执行多次,每次匹配得到的字符串就是match。

针对参数match来说,以下例子可以进行说明:

function styleHyphenFormat(propertyName) {
  function upperToHyphenLower(match) {
    return '-' + match.toLowerCase();
  }
  return propertyName.replace(/[A-Z]/g, upperToHyphenLower);
}
var styleFormat = styleHyphenFormat('borderLeftWidth') // styleFormat的结果是"border-left-width"

上述例子应该即是jquery的css函数中的实现,巧用match参数可以有效的避免循环。

b. p1, p2…: 捕获组匹配到的字符串。如果正则表达式中含有捕获组的话,
针对p1,p2…等参数来说,以下例子可以进行说明:

function replacer(match, p1, p2, p3, offset, string) {
	console.log(match)
  	return [p1, p2, p3].join(' - ');
}
var newString = 'abc12345#$*%'.replace(/([^\d]*)(\d*)([^\w]*)/, replacer); // newString的结果是 abc - 12345 - #$*%

注意上述例子中的match打印出来的结果是‘abc12345#$*%’,即如果pattern中没有全局标志g的话,match参数得到的就是match方法中参数1pattern中包含捕获组情况下得到的数组的第一个元素。

c. offset:每次匹配得到的字符串在源字符串中的偏移量。(比如,如果原字符串是“abcd”,匹配到的子字符串是“bc”,那么这个参数将是1)

d. string: 被匹配的原字符串。


join()方法用于把数组中的所有元素放入一个字符串。
1、join方法的参数不传或者传入undefined会默认用逗号分隔。

var arr = ["red","yellow","blue"];
var array = [];
array = arr.join(undefined);
console.log(array);  //red,yellow,blue
array = arr.join("|");
console.log(array);  //red|yellow|blue

2、如果用join来分隔数组的话,这个变量就会变成字符串类型,就算之前是数组也会变成字符串类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值