JavaScriptsplice
仅适用于数组。对于字符串有类似的方法吗?或者我应该创建自己的自定义函数?
The substr()
, and substring()
方法只会返回提取的字符串,不会修改原始字符串。我想要做的是从字符串中删除某些部分并将更改应用于原始字符串。此外,该方法replace()
在我的情况下不起作用,因为我想删除从索引开始到其他索引结束的部分,就像我可以用splice()
方法。我尝试将字符串转换为数组,但这不是一个巧妙的方法。
将字符串切片两次会更快,如下所示:
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 http://jsperf.com/split-or-slice-for-string-splice/2比较了这两种方法和其他几种方法。 (jsperf 已经关闭几个月了。请在评论中提出替代方案。)
虽然上面的代码实现了重现的函数general的功能splice
,针对提问者提出的情况优化代码(即不向修改后的字符串添加任何内容)不会改变各种方法的相对性能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)