Замена подстрок без регулярных выражений
Как заменить все вхождения подстроки в строке, не используя регулярные выражения?
помогите с заданием :) с рег. выражения не принял препод, не проходили. |
давай свой код, будем смотреть
|
Цитата:
function replace(source, pattern, newString) { return source.split(pattern).join(newString); } alert( replace("abab", "b", "c") ); Если и это не проходили, то indexOf и slice тебе в помощь. Решение писать лень - сам разберёшься. |
|
Цитата:
function replaceSubstr(str, substr, replacer){ var s = substr.replace(/[.^$|?*+(){}\[\]\\]/g, '\\$&'); return str.replace(new RegExp(s, 'g'), replacer); } |
Если совсем без методов
function replaceSubStr(str, subStr, replacer) { var newStr = '', n = subStr.length, N = str.length; for (var i = 0; i < N; i++) { var j = i; while (j < i+n && str[j] === subStr[j-i]) j++; if (j === i+n) { newStr += replacer; i += n-1; } else newStr += str[i]; } return newStr; } |
Только не str[j\i], а str.charAt(j\i) - уважайте старых осликов.
|
Цитата:
P.S. Интересно - быстрее ли http://javascript.ru/forum/misc/4815...tml#post317621 |
Demath, http://jsperf.com/replace-word-reg-vs-circle-vs-split
особой разницы нет. Если подготовить регулярку заранее думаю вообще быстрее будет. Регулярки очень хорошо оптимизированы в наше время. |
спасибо! принял препод без придирок :)
помогите с еще одним заданием: Найти и записать в массив в строке содержимое заданного тега. Тоже нужно без регулярок. |
Часовой пояс GMT +3, время: 09:52. |