標籤:tab pattern 長度 table val 而不是 bss exp middle
關於JS刪除String裡的字元的方法,一般使用replace()方法。但是這個方法只會刪除一次,如果需要將string裡的所以字元都刪除就要用到正則。
var str = "abcdaabbssaaa";var reg = new RegExp("a","g");var a = str.replace(reg,"");console.log(a);
這裡用 new RegExp()這個方法建立正則,第一個參數“a”指定了Regex的模式或其他Regex。後一個參數是一個可選的字串,包含屬性 "g"、"i" 和 "m",分別用於指定全域匹配、區分大小寫匹配和多行匹配。ECMAScript 標準化之前,不支援 m 屬性。如果 pattern 是Regex,而不是字串,則必須省略該參數。
如果列印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
對比發現,還是用正則快一點吧~~而且感覺高大上~~~
JS刪除String裡某個字元的方法