Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Дублирование кода (https://javascript.ru/forum/dom-window/61466-dublirovanie-koda.html)

ureech 19.02.2016 17:17

Дублирование кода
 
Здравствуйте.Написал код для вставки смайлов при вызове строки из хранилища.Но если в тексте несколько смайлов, то они дублируются.Если два, то 2+2, если три, то 3+3+3 и т.д. Подскажите где поправить.

var sm = new Array();
var sm = []
sm[0] = ':smile:';
sm[1] = ':crazy:';
sm[2] = ':angel:';

var match_smile = /:(.*?):/gi;

var result = (a.mess).match(match_smile); //a.mess - строка

for(var i=0; i<result.length; i++) {
  result[i] = result[i].replace(match_smile,'<img src="/images/smilies/$1.gif" />');
}
if(result){
a.mess = a.mess.replace(match_smile,result);
}
var bbcode = bbcodeParser.bbcodeToHtml(a.mess) // Парсер кода

$(get_mes).empty().append(bbcode);   // выводим строку в блоке


Понимаю, что надо или условие как то по другому или параметр какой то при замене, но не могу додумать.

destus 19.02.2016 18:38

Чет намудрил капитально. Передавая в str.replace регулярное выражение с флагом g можно сразу заменять все найденные совпадения в строке.

ureech 19.02.2016 18:57

Спасибо,всё верно.


Часовой пояс GMT +3, время: 00:36.