В JavaScript, как я могу выполнить глобальную замену на строке с переменной внутри '/' и '/g'?

Добрые люди в FutureTap сделали бесплатный доступ к FTLocationSimulator в GitHub . Это позволяет вам подготовить тестовый маршрут, используя, например, Google Earth, а затем заставить симулятор подавать эти координаты в ваше приложение.

Я написал сообщение в блоге о том, как используйте FTLocationSimulator, чтобы легко переключаться между несколькими маршрутами во время тестирования функций местоположения.

66
задан Eric Wendelin 12 February 2009 в 17:10
поделиться

7 ответов

Можно ли использовать prototype.js? Раз так Вы могли использовать String.gsub, как

var myStr = "a day in a life of a thing";
 var replace = "a";
 var resultString = myStr.gsub(replace, "g");
 // resultString will be "g day in g life of g thing"

Он также возьмет регулярные выражения. Мне это - один из более изящных способов решить его. prototypejs gsub документация

-16
ответ дан Heat Miser 7 November 2019 в 10:52
поделиться

Thats регулярное выражение, не строка. Используйте конструктора для Объекта RegExp для динамичного создания regex.

var r = new RegExp(stringToFind, 'g');
mystring.replace(r, 'some replacement text');
3
ответ дан Alex Wayne 7 November 2019 в 10:52
поделиться
var mystring = "hello world test world";
var find = "world";
var regex = new RegExp(find, "g");
alert(mystring.replace(regex, "yay")); // alerts "hello yay test yay"

В случае, если Вам нужно это в функцию

  replaceGlobally(original, searchTxt, replaceTxt) {
    const regex = new RegExp(searchTxt, 'g');
    return original.replace(regex, replaceTxt) ;
  }
185
ответ дан Mauricio Gracia Gutierrez 7 November 2019 в 10:52
поделиться
String.prototype.replaceAll = function (replaceThis, withThis) {
   var re = new RegExp(RegExp.quote(replaceThis),"g"); 
   return this.replace(re, withThis);
};


RegExp.quote = function(str) {
     return str.replace(/([.?*+^$[\]\\(){}-])/g, "\\$1");
};

var aa = "qwerr.erer".replaceAll(".","A");
alert(aa);

сообщение silmiar

16
ответ дан Community 7 November 2019 в 10:52
поделиться

Если Вы хотите интерполированные переменные, необходимо использовать Объект RegExp

https://пример developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Regular_Expressions

:

var str = "This is my name";
var replace = "i";
var re = new RegExp(replace, 'g')    

str = str.replace(re, 'p');
alert(str);
1
ответ дан Philip Reynolds 7 November 2019 в 10:52
поделиться

Для regex, new RegExp(stringtofind, 'g');. НО. Если ‘find’ будет содержать символы, которые специальны в regex, то у них будет свое значение regexy. Таким образом, если бы Вы пытались заменить '.' в 'abc.def' с 'x', то Вы добрались бы 'xxxxxxx' —  whoops.

, Если все Вы хотите, замена простой строки, нет никакой потребности в регулярных выражениях! Вот простая строковая идиома замены:

mystring= mystring.split(stringtofind).join(replacementstring);
72
ответ дан bobince 7 November 2019 в 10:52
поделиться

Попытка:

var stringToFind = "test";
mystring = mystring.replace(new RegExp(stringToFind, "g"), mystring);
2
ответ дан Crescent Fresh 7 November 2019 в 10:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: