Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.06.2014, 12:22
Новичок на форуме
Отправить личное сообщение для truten Посмотреть профиль Найти все сообщения от truten
 
Регистрация: 14.12.2013
Сообщений: 5

Замена подстрок без регулярных выражений
Как заменить все вхождения подстроки в строке, не используя регулярные выражения?
помогите с заданием с рег. выражения не принял препод, не проходили.
Ответить с цитированием
  #2 (permalink)  
Старый 22.06.2014, 12:26
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

давай свой код, будем смотреть
Ответить с цитированием
  #3 (permalink)  
Старый 22.06.2014, 12:45
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от truten
не проходили
А что проходили? Проще всего с помощью метода .split:
function replace(source, pattern, newString) {
  return source.split(pattern).join(newString);
}

alert( replace("abab", "b", "c") );

Если и это не проходили, то indexOf и slice тебе в помощь. Решение писать лень - сам разберёшься.
Ответить с цитированием
  #4 (permalink)  
Старый 22.06.2014, 13:04
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

Сообщение от Sweet Посмотреть сообщение
Если и это не проходили, то indexOf и slice тебе в помощь.
А в самом крайнем случае есть ещё .charAt().=)
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 22.06.2014, 13:08
Новичок на форуме
Отправить личное сообщение для truten Посмотреть профиль Найти все сообщения от truten
 
Регистрация: 14.12.2013
Сообщений: 5

Сообщение от skrudjmakdak
давай свой код, будем смотреть
получилось только с рег. выражениями, а препод из-за них не принимает

function replaceSubstr(str, substr, replacer){
	
    var s = substr.replace(/[.^$|?*+(){}\[\]\\]/g, '\\$&');
    return str.replace(new RegExp(s, 'g'), replacer);
}
Ответить с цитированием
  #6 (permalink)  
Старый 22.06.2014, 13:23
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Если совсем без методов

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;
}

Последний раз редактировалось Demath, 26.06.2014 в 14:40. Причина: опечатка
Ответить с цитированием
  #7 (permalink)  
Старый 22.06.2014, 13:30
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

Только не str[j\i], а str.charAt(j\i) - уважайте старых осликов.
__________________
29375, 35
Ответить с цитированием
  #8 (permalink)  
Старый 22.06.2014, 13:41
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Сообщение от Aetae
Только не str[j\i], а str.charAt(j\i) - уважайте старых осликов.
Конечно. Куда ж без осла

P.S. Интересно - быстрее ли Замена подстрок без регулярных выражений
Ответить с цитированием
  #9 (permalink)  
Старый 22.06.2014, 14:39
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

Demath, http://jsperf.com/replace-word-reg-vs-circle-vs-split
особой разницы нет. Если подготовить регулярку заранее думаю вообще быстрее будет. Регулярки очень хорошо оптимизированы в наше время.
__________________
29375, 35

Последний раз редактировалось Aetae, 22.06.2014 в 14:42.
Ответить с цитированием
  #10 (permalink)  
Старый 24.06.2014, 13:39
Новичок на форуме
Отправить личное сообщение для truten Посмотреть профиль Найти все сообщения от truten
 
Регистрация: 14.12.2013
Сообщений: 5

спасибо! принял препод без придирок

помогите с еще одним заданием:
Найти и записать в массив в строке содержимое заданного тега.

Тоже нужно без регулярок.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена подстрок в строке Neznayka Javascript под браузер 8 01.06.2013 23:44
Логика регулярных выражений Overflow Events/DOM/Window 13 10.07.2012 20:57
Создание фильтра базы ссылок с помощью регулярных выражений SvetozarPNZ Events/DOM/Window 8 28.10.2010 13:15
Тестер регулярных выражений Riim Ваши сайты и скрипты 9 07.03.2010 09:21
Изменить таг с помощью регулярных выражений alexKniaz Общие вопросы Javascript 1 28.10.2008 17:38