Самый быстрый метод для замены всех экземпляров символа в строке - PullRequest
567 голосов
/ 22 января 2010

Какой самый быстрый способ заменить все вхождения строки / символа в строке в JavaScript? A while, for -петл, регулярное выражение?

Ответы [ 13 ]

4 голосов
/ 22 января 2010

Используйте метод replace() объекта String.

Как упоминалось в выбранном ответе, в регулярном выражении должен использоваться флаг / g, чтобы заменить все экземпляров подстроки в строке.

2 голосов
/ 22 апреля 2014
// Find, Replace, Case
// i.e "Test to see if this works? (Yes|No)".replaceAll('(Yes|No)', 'Yes!');
// i.e.2 "Test to see if this works? (Yes|No)".replaceAll('(yes|no)', 'Yes!', true);
String.prototype.replaceAll = function(_f, _r, _c){ 

  var o = this.toString();
  var r = '';
  var s = o;
  var b = 0;
  var e = -1;
  if(_c){ _f = _f.toLowerCase(); s = o.toLowerCase(); }

  while((e=s.indexOf(_f)) > -1)
  {
    r += o.substring(b, b+e) + _r;
    s = s.substring(e+_f.length, s.length);
    b += e+_f.length;
  }

  // Add Leftover
  if(s.length>0){ r+=o.substring(o.length-s.length, o.length); }

  // Return New String
  return r;
};
0 голосов
/ 26 сентября 2018

@ Gumbo добавление дополнительного ответа - user.email.replace (/ foo / gi, "bar");

/foo/g - Refers to the all string to replace matching the case sensitive

/foo/gi - Refers to the without case sensitive and replace all For Eg: (Foo, foo, FoO, fOO)

DEMO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...