var myString="q w e r qq w e q";
myString = myString.replace('q', 'Q');Но, существует НО. Этот метод заменит только первую найденную подстроку, а мы хотим заменить все. Метода replaceAll не существует. Вызывать метод replace в цикле пока не будут заменены все подстроки — не наш путь. Решение рядом.Для того чтобы сделать что нам необходимо нужно всего лишь вместо строки для замены подавать регулярное выражение с флагом 'g' - global match.
var myString="q w e r qq w e q"; myString = myString.replace(/q/g, 'Q');
Таким образом все вхожденя будут заменены. Вроде уже хорошо, но можно сделать еще проще. Давайте сделаем более OOP-style и добавим к классу String метод replaceAll.
String.prototype.replaceAll=function(find, replace_to){
return this.replace(new RegExp(find, "g"), replace_to);
};Таким образом вставив вначале вашего скрипта этот код, мы определим метод replaceAll у строки и потом можем просто вызывать с двумя параметрами - строки для поиска, и строки для замены.
"r re rer er er".replaceAll('r', '-');Happy coding! :)
4 comments:
Интересно, как будет работать вот такое:
"a(b)c".replaceAll('(b)', '[d]');
"a([d])c"
Хм, не то что ожидается...
А еще можно просто myString = myString.replace(/q/g, 'Q');
заменит все q на Q
Что ж неплохое решение для нахождения подстрок) Спасибо Вам, позаимствовал с удовольствием.
Post a Comment