JavaScript中replace与split+join处理制表符的结果是否始终一致?
两个JavaScript制表符替换语句的结果是否可能不一致?
给定两个用于将字符串中制表符(\t)替换为竖线(|)的JavaScript语句:
第一个语句:
var s = input_string.replace(/\t/g, '|');
第二个语句:
var s = input_string.split('\t').join('|');
这两个语句的执行结果完全一致,不存在不一致的可能性。
原因如下:
- 第一个语句通过全局正则表达式匹配字符串里所有的制表符,每匹配到一个就替换为
|,实现全量替换所有\t的效果。 - 第二个语句先将字符串按\t分割成数组,再用
|拼接数组所有元素,本质也是把每一处\t的位置替换成|,和全局替换的逻辑完全等价。
无论input_string是空字符串、不含制表符、包含单个制表符还是多个连续制表符,两种写法的输出结果都会完全相同。
内容的提问来源于stack exchange,提问作者AGamePlayer
相关产品推荐
相关产品推荐

