JavaScript中删除字符串指定字符的两种方法及性能对比
本文介绍在JavaScript中删除字符串指定字符的两种常用方法:使用正则表达式全局替换和通过split与join组合处理。文章提供了具体代码示例,并对长度为133的字符串进行了性能测试,对比了两种方法在最快、最慢及平均耗时上的表现,帮助开发者根据实际需求选择更高效的实现方式。
方法一:使用正则表达式
在JavaScript中删除字符串内的字符,通常首选replace()方法。然而,该方法默认仅替换第一次出现的匹配项。若需删除字符串中所有符合条件的字符,则必须借助正则表达式来实现全局替换。
var str = "abcdaabbssaaa";
var reg = new RegExp("a","g");
var a = str.replace(reg,"");
console.log(a);
可以通过new RegExp()构造函数来创建正则对象。第一个参数用于指定匹配模式,例如字符“a”。第二个参数是可选的标志字符串,包含“g”(全局匹配)、“i”(忽略大小写)和“m”(多行匹配)等属性,用于控制匹配行为。在ECMAScript标准化之前,并不支持“m”属性。如果传入的参数pattern本身已是正则表达式实例,则无需也不应提供第二个参数。
执行上述代码后,打印reg变量的结果将显示为:/a/g。
方法二:分割后重新拼接
另一种较为巧妙的处理思路是将字符串分割为数组,去除目标字符后,再将剩余部分重新拼接成新的字符串。
var str = "abcdaabbssaaa";
var a = str.split("a").join("");
console.log(a);
我对上述两种方法的执行性能进行了测试。选取了一个长度为133的字符串,其中包含28个需要删除的目标字符,两种方法的运行耗时数据如下表所示:
| 使用正则 | 分割成数组 |
| 11.674ms | 6.569ms |
| 8.683ms | 6.727ms |
| 5.802ms | 12.309ms |
| 4.492ms | 8.456ms |
| 3.921ms | 6.481ms |
| 3.766ms | 4.275ms |
| 6.472ms | 2.985ms |
| 14.631ms | 15.029ms |
| 6.985ms | 8.523ms |
| 9.835ms | 7.063ms |
使用正则表达式删除字符时,最慢耗时14.631ms,最快耗时3.766ms,平均耗时为7.6261ms。
使用第二种分割拼接方法时,最慢耗时15.029ms,最快耗时2.985ms,平均耗时为7.8417ms。
通过对比数据可以发现,正则表达式的执行速度略快一些,且代码实现更为简洁直观。
以下是补充案例
JavaScript删除字符串中指定子串的具体应用
案例一:
假设存在如下原始字符串:
var StringFirst = "12:30:08";
现在的目标是将字符串中的冒号删除,最终得到结果“123008”。
实现这一目标可以先使用split方法:
var splitFirst = StringFirst.split(':');
此时,分割后的数组元素分别为“12”、“30”和“08”,原字符串中的冒号已被移除。接下来,将该数组元素连接起来:
var ResultString = splitFirst.join('');
由于join()方法的参数为空字符串,连接时不会插入任何分隔符或空格。最终,ResultString的值变为“123008”。
案例二:
例如,处理如下原始字符串:
str = 'btn_text,other_call,start_place,estimate_price,select_contacts,payment,remark'
可以先将其转换为数组,然后从数组中移除指定的字符串元素:
var arr = str.split(','); arr.splice($.inArray('要移除的字符串',arr),1);
至此,关于JavaScript中删除字符串指定字符的方法介绍完毕。如需了解更多相关内容,建议查阅本站往期文章或继续浏览后续文章。感谢大家的支持!
tween.js 内存泄漏预防:怎么正确停止动画与清理对象
2026-11-05 15:52:56
Vue或React项目中为何不建议直接使用JS刷新页面
2026-11-05 13:57:30
哪里可以找到高质量的免费JS脚本资源?
2026-11-05 13:15:03
JS数组对象怎么根据指定ID字段去重
2026-11-04 21:41:10
JS数组去重方法性能对比:Set、Map与Filter谁更快
2026-11-04 16:14:15
