Подтвердить что ты не робот

MyString.replace(VARIABLE, "")...... но глобально

Как я могу использовать переменную для удаления всех экземпляров подстроки из строки? (чтобы удалить, я думаю, что лучший способ - заменить, ни с чем, глобально... правильно?)

если у меня есть эти 2 строки,

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

то что-то вроде этого

myString.replace(oldWord, "");

заменяет только первый экземпляр переменной в строке.

но если я добавлю глобальный g, как этот myString.replace(/oldWord/g, "");, он не сработает, потому что он считает oldWord, в данном случае, подстрокой, а не переменной. Как это сделать с переменной?

4b9b3361

Ответ 1

Ну, вы можете использовать это:

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

или просто:

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

Ответ 2

При передаче переменных вы должны использовать конструктор, а не буквенный синтаксис. Придерживайтесь литерального синтаксиса для литеральных строк, чтобы избежать сбивания синтаксиса escape.

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

myString.replace(oldWordRegEx,"");

Ответ 3

Нет необходимости использовать регулярное выражение здесь: разделите строку вокруг совпадений подстроки, которую вы хотите удалить, затем соедините остальные части вместе:

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

В примере OP:

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

Ответ 4

В соответствии с документами в 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 сообщает, что он выполняет глобальную замену, игнорируя регистр.