web-dev-qa-db-ja.com

myString.replace(VARIABLE、 "")......しかしグローバルに

変数を使用して、文字列から部分文字列のすべてのインスタンスを削除するにはどうすればよいですか? (削除するには、何もせずにグローバルに置き換えるのが最善の方法だと思っています...そうですか?)

これら2つの文字列がある場合、

_myString = "This sentence is an example sentence."
oldWord = " sentence"
_

それからこのようなもの

_myString.replace(oldWord, "");
_

文字列内の変数の最初のインスタンスのみを置き換えます。

しかし、このmyString.replace(/oldWord/g, "");のようにグローバルgを追加すると、この例ではoldWordは変数ではなく部分文字列であると見なされるため、機能しません。変数でこれを行うにはどうすればよいですか?

36
monkey blot

まあ、これを使用できます:

var reg = new RegExp(oldWord, "g");
myString.replace(reg, "");

または単に:

myString.replace(new RegExp(oldWord, "g"), "");
68

変数を渡すときは、リテラル構文ではなくコンストラクターを使用する必要があります。エスケープ構文の混乱を避けるために、リテラル文字列のリテラル構文に固執します。

var oldWordRegEx = new RegExp(oldWord,'g');

myString.replace(oldWordRegEx,"");
8
Erik Reppen

ここで正規表現を使用する必要はありません。削除する部分文字列の一致で文字列を分割し、残りの部分を結合します。

myString.split(oldWord).join('')

OPの例:

var myString = "This sentence is an example sentence.";
var oldWord = " sentence";
console.log(myString.split(oldWord).join(''));
3
GOTO 0