Помогите с поиском в масиве
В общем есть код:
var text="Eugene Yevgen Oksai, Olesya, Yevgen"; myName="Yevgen"; hits=[]; for (i=0;i<=text.length;i++){ if (text[i]==='Y'){ for(j=i; j< (i+ myName.length);j++){ hits.push(""+text[j]+"")}} } if (hits!=0){ console.log(hits);} else console.log("Your name wasn`t found"); который выводит: ["Y", "e", "v", "g", "e", "n", "Y", "e", "v", "g", "e", "n"] нужно что б выводило: [Yevgen, Yevgen] or [Yevgen Yevgen] or idialy: Yevgen, Yevgen У кого нибудь есть идеи, подскажите плз:thanks: |
:cray:
var text = "Eugene Yevgen Oksai, Olesya, Yevgen", myName = "Yevgen", hits = []; for (i = 0; i < text.length; i++) { if (text[i] === 'Y') { var str = ''; for (j = i; j < (i + myName.length); j++) { str += text[j] }; hits.push(str) } } if (hits.length) alert(hits); |
В принципе просто, но я б сам не догадался, спасибо огромное!
|
честно не понятно логика ваших действий. Потому как результат можно и так получить
var text = "Eugene Yevgen Oksai, Olesya, Yevgen", myName = /Yevgen/g; alert(text.match(myName)); |
Цитата:
Спасибо, за упрощенный код, у меня следующий вопрос, что это за присвоение такое: myName = /Yevgen/g; Или где о нем можно прочитать? |
Вот так
var legal_names = 'Eugene|Yevgen|Oksa|Olesya|Yevgen'; var reg = new RegExp('^(?:'+legal_names+')$'); var matched = 'Oksa'.match(reg); console.log(matched); // Array['Oksa'] Disclaimer: не я придумал, я нашел и у себя применяю вместо поиска в массиве литералов. Для тех кто еще юзает массивы: private static function is_input($name) { return preg_match('/^(?:button|checkbox|color|date|datetime|datetime-local|email|file|hidden|image|month|number|password|radio|range|reset|search|submit|tel|text|time|url|week)$/',$name); } |
Цитата:
Цитата:
http://javascript.ru/RegExp |
kostyanet, че у тя за функция такая is_input? Ты будешь до конца своих дней поддерживать ее и обновлять список типов по мере их появления? :)
|
Это у меня еще нет функции is_bool_attr, там на полстраницы атрибутов которые отвечают шаблону "без валуе".
На самом деле не так. Это же не опенсорц, чтобы кто хочет тот писал что угодно. Тут кто хочет тот пишет что можно. Сегодня я добавил туда тип captcha. ПОтому что инпуты бывают void, а бывают не пустые. ЧТобы унифицировать тип инпута, чтобы равнозначно писать и ->type('text') и ->type('textarea') и ->type('select') пришлось собрать все типы инпутов в кучу (это уже все собрано, не волнуйтесь) и определять реверсом что инпут, а что не пустой. |
Кстати, а какого члена ФФ рисует в своем инспекторе элементов инпуты вот так
<input type="text"></input> Я потратил 10 минут в поисках бага в скрипте, пока допер посмотреть хтмл-сам. Там все было правильно, как w3c.org завещал. |
По правилам заднепроходной совместимости браузер рендерит неизвестный тип как text. Для старых браузеров половина того списка означает text. Меня это не колышет потому я беру не elem.type, а elem.getAttribute('type'). В теории старый браузер обязан выдать именно email, captcha, tel и тп.
|
Можно наоборот сделать список не пустых инпутов, но все равно потребуется список пустых, теперь уже тегов. Иначе как вы отрендерите без закрывашки и с закрывашкой?
Потому что хтмл это XML втоптанный в гавно. Вот и приходится извращаться. На XML я бы тупо проверил контент - нет контента /> есть контент - </entity> Кстати про XML. А как вы еще сделаете из, скажем <input> <title>Введите сюда</title> <type>date</type> <default>2014</default> <min>1989</min> </input> В XSL <input type="date" ... /> UPD Похоже он сам закрывает как надо <xsl:element name="input"> <xsl:attribute name="style">position:absolute; width:<xsl:value-of select="."/>%;right:0;</xsl:attribute> <xsl:attribute name="type">text</xsl:attribute> <xsl:attribute name="name"><xsl:value-of select="name()"/></xsl:attribute> </xsl:element> Это один раз я сделал сайт целиком на XML-XSL, с тех пор все забыл и вспоминаю как страшный сон. |
Часовой пояс GMT +3, время: 13:01. |