字符串是否有拼接方法?

2022-08-30 05:23:18

Javascript只适用于数组。字符串有类似的方法吗?还是应该创建自己的自定义函数?splice

和 方法将仅返回提取的字符串,而不修改原始字符串。我想做的是从我的字符串中删除一些部分,并将更改应用于原始字符串。此外,该方法在我的情况下不起作用,因为我想删除从索引开始到其他索引结束的部分,就像我可以使用该方法执行的操作一样。我尝试将字符串转换为数组,但这不是一个简洁的方法。substr()substring()replace()splice()


答案 1

将字符串切片两次会更快,如下所示:

function spliceSlice(str, index, count, add) {
  // We cannot pass negative indexes directly to the 2nd slicing operation.
  if (index < 0) {
    index = str.length + index;
    if (index < 0) {
      index = 0;
    }
  }

  return str.slice(0, index) + (add || "") + str.slice(index + count);
}

而不是使用拆分后跟连接(Kumar Harsh的方法),如下所示:

function spliceSplit(str, index, count, add) {
  var ar = str.split('');
  ar.splice(index, count, add);
  return ar.join('');
}

这是一个jsperf,比较了这两个和其他几个方法。(jsperf已经关闭了几个月了。请在评论中提出替代方案。

尽管上面的代码实现了重现 的一般功能的函数,但针对提问者呈现的情况优化代码(即,不对修改后的字符串添加任何内容)不会改变各种方法的相对性能。splice


答案 2

编辑

这当然不是“拼接”字符串的最佳方法,我以此作为实现方式的示例,这是有缺陷的,从split(),splice()和joction()中非常明显。有关更好的实现,请参阅Louis的方法。


不,没有这样的东西,但你可以试试这个:String.splice

newStr = str.split(''); // or newStr = [...str];
newStr.splice(2,5);
newStr = newStr.join('');

我意识到数组中没有函数,所以你必须将字符串转换为数组。运气不好...splice