49

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

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

myString = "This sentence is an example sentence."
oldWord = " sentence"

それからこのようなもの

myString.replace(oldWord, "");

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

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

4

4 に答える 4

91

さて、あなたはこれを使うことができます:

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

または単に:

myString.replace(new RegExp(oldWord, "g"), "");
于 2012-04-13T06:17:24.777 に答える
12

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

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

myString.replace(oldWordRegEx,"");
于 2012-04-13T06:19:35.523 に答える
-2

MDNのドキュメントによると、これを行うことができます:

var re = /apples/gi;
var str = 'Apples are round, and apples are juicy.';
var newstr = str.replace(re, 'oranges');
console.log(newstr);  // oranges are round, and oranges are juicy.

/gi は、大文字と小文字を区別せずにグローバルな置換を行うように指示します。

于 2015-02-19T14:08:47.223 に答える