Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 24.06.2014, 14:46
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

а в учебнике по этому поводу что-то сказано?
Ответить с цитированием
  #12 (permalink)  
Старый 24.06.2014, 17:59
Новичок на форуме
Отправить личное сообщение для truten Посмотреть профиль Найти все сообщения от truten
 
Регистрация: 14.12.2013
Сообщений: 5

Сообщение от BETEPAH
а в учебнике по этому поводу что-то сказано?
из практики почти ничего конкретного нет, немного примитива

Сообщение от truten
помогите с еще одним заданием:
Найти и записать в массив в строке содержимое заданного тега.
Тоже нужно без регулярок.
т.е. найти в строке содержимое каждого заданного тега. например для тега <div> из строки

Lorem <div>ipsum dolor</div> sit amet, consectetur <div>adipisicing elit</div>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, <div>quis nostrud exercitation ullamco</div> laboris nisi ut aliquip ex ea commodo consequat.

нужно записать в массив arr

arr[0] = "ipsum dolor";
arr[1] = "adipisicing elit";
arr[2] = "quis nostrud exercitation ullamco".
Ответить с цитированием
  #13 (permalink)  
Старый 24.06.2014, 18:38
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

truten, например, так:
var string = 'Lorem <div>ipsum dolor</div> sit amet, consectetur <div>adipisicing elit</div>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, <div>quis nostrud exercitation ullamco</div> laboris nisi ut aliquip ex ea commodo consequat.';
alert(getInnerStrings(string, "div"));

function getInnerStrings(string, tagName) {
  var openTag = "<" + tagName + ">";
  var closeTag = "</" + tagName + ">";
  
  var substrings = [];
  
  for (var position = string.indexOf(openTag); position != -1; position = string.indexOf(openTag, position)) {
    position += openTag.length;
    
    var closeTagPosition = string.indexOf(closeTag, position);
    if (closeTagPosition == -1) throw new Error("parse error");
    
    substrings.push( string.substring(position, closeTagPosition) );
    position = closeTagPosition + closeTag.length;
  }
  
  return substrings;
}
Ответить с цитированием
  #14 (permalink)  
Старый 24.06.2014, 19:27
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Или так, если не проходили методы для работы со строками

var str = 'Lorem <div>ipsum dolor</div> sit amet, consectetur <div>adipisicing elit</div>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, <div>quis nostrud exercitation ullamco</div> laboris nisi ut aliquip ex ea commodo consequat.';

alert( getTagContent(str, '<div>', '</div>').join(';\n') );

function getTagContent(str, openTag, closeTag)
{   
    var N = str.length, n1 = openTag.length, n2 = closeTag.length,
        arr = [], L = 0;
    for (var i = 0; i < N; i++)
    {  var j0, j = i, k0 = i + n1, k = k0;
       while (j < k0 && str.charAt(j) === openTag.charAt(j-i))  j++;
       if (j === k0) j0 = j;
       while (k < k0 + n2 && str.charAt(k) === closeTag.charAt(k-k0)) k++;
       if (k === k0 + n2)
       {  var t = '';
          while (j0 < k0) t += str.charAt(j0++);
          arr[L++] = t;
          i += n1+n2-1;
       }
    }
    return arr;
}
Ответить с цитированием
  #15 (permalink)  
Старый 24.06.2014, 23:22
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

var arr =[],
    div = document.createElement('div');
div.innerHTML = 'Lorem <div>ipsum dolor</div> sit amet, consectetur <div>adipisicing elit</div>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, <div>quis nostrud exercitation ullamco</div> laboris nisi ut aliquip ex ea commodo consequat.';
[].forEach.call(div.querySelectorAll('div'), function(el) {
    arr.push(el.innerHTML);
});
console.log(arr);

с уважением к старым осликам:
var arr =[],
    temp,
    div = document.createElement('div');
div.innerHTML = 'Lorem <div>ipsum dolor</div> sit amet, consectetur <div>adipisicing elit</div>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, <div>quis nostrud exercitation ullamco</div> laboris nisi ut aliquip ex ea commodo consequat.';
temp = div.getElementsByTagName('div');
for (var i = 0; i < temp.length; i++) {
    arr.push(temp[i].innerHTML);
}
console.log(arr);

Последний раз редактировалось BETEPAH, 24.06.2014 в 23:27.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена подстрок в строке 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