Замена подстрок без регулярных выражений
Как заменить все вхождения подстроки в строке, не используя регулярные выражения?
помогите с заданием :) с рег. выражения не принял препод, не проходили. |
давай свой код, будем смотреть
|
Цитата:
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, время: 13:01. |