2017-07-02 86 views
0

我試圖做一個函數,可以採取一個字符和一個字符串作爲參數,並從字符串中刪除該字符。刪除任何給定字符串的任何給定的字符串

function removeCharacter(char, str) { 
    return str.replace(char, ''); 
} 
ex: removeCharacter('r', "character") - > chaacte 

否則這樣只會刪除第一個字符,所以我發現了關於全球正則表達式,但這裏是我碰了壁...我怎樣才能使它所以它可以採取任何給定的字符是這樣的:

str.replace(/char/g, '') 

我想傳遞一個字符作爲函數的參數和它們全部刪除。有沒有辦法與正則表達式或我應該使用for語句?或者,還有更好的方法?

+0

參見本:https://stackoverflow.com/questions/20769908/remove-specific-char-from-string – TJcobra

+0

你的參考文獻是在Java中:) – ValLeNain

回答

3

您可以構造一個正則表達式。

function removeCharacter(char, str) { 
    var reg = new RegExp(char, 'g'); 
    return str.replace(reg, ''); 
} 

[編輯]
這個答案只能是在不從視正則表達式點特殊字符(如「/」,「(」字符「」),否則會失敗或有意外的行爲。比照@Wiktor's answer

+0

這就是我所需要的。非常感謝你:) –

+0

@AlinFaur:我懷疑這是你需要的。用'('來嘗試。 –

2

要刪除字符的多次出現,你在JavaScript中,該構造有g(全球)修改正則表達式need to use a regex

但是,你不能只用/char/g,則需要使用構造函數表示法,new RegExp(char, "g")來聲明正則表達式。

而且,由於一些字符被保留,特殊的正則表達式元字符,則必須escape them.

所以,你需要的是

function removeCharacter(char, str) { 
 
    return str.replace(new RegExp(char.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), 'g'), ''); 
 
} 
 
console.log(removeCharacter("(", "(abc(")); // => abc

相關問題