Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Поиск в строке другой подстроки средствами JS (https://javascript.ru/forum/misc/1862-poisk-v-stroke-drugojj-podstroki-sredstvami-js.html)

YAN 26.09.2008 05:19

Поиск в строке другой подстроки средствами JS
 
Есть ли какая-то ф-я поиска в строке другой подстроки?
как это можно реализовать.

Например мне нужно знать есть ли в строке
http://yandex.ru/yandsearch?text=wwww&lr=187
слово yandex.ru


Заранее спасибо.

Octane 26.09.2008 05:38

var str = 'http://www.yandex.ru';
if(str.indexOf('yandex.ru') + 1) {
...
}

Беляш 23.01.2011 19:03

Octane, а зачем здесь +1 в условии? Просто не пойму, а хотелось бы понять.

Aetae 23.01.2011 19:27

indexOf() возвращает если не найдено -1, если найдено - позицию вхождения. В js 0==false, любое др. число даёт true;
alert([
!!0,
!!-1,
!!6
])


Вообще с энтим indexOf() каждый извращается как может).
if( ~a.indexOf(b) )
if(  a.indexOf(b)>-1 )
if(  a.indexOf(b)!=-1 )
if(  a.indexOf(b)+1 )

итд)

ASerputko 23.01.2011 19:45

Можно использовать регулярные выражения
var url = "http://yandex.ru/yandsearch?text=wwww&lr=187"; // юрл в котором происходит поиск
var regV = /yandex\.ru/gi;     // шаблон
var result = url.match(regV);  // поиск шаблона в юрл

// вывод результата
if (result) {
    document.write("Совпадение найдено")
} else {
    document.write("Совпадение не найдено")
}

Aetae 23.01.2011 19:47

Цитата:

Сообщение от ASerputko (Сообщение 89332)
Можно использовать регулярные выражения

Но не нужно, если можно обойтись.

blessmaster 16.02.2011 00:19

Кагбэ
if(false !== str.indexOf('yandex.ru')) {
    ...
}

или
var pos = str.indexOf('yandex.ru');
if(false !== pos) {
    ...
}

если нужна позиция вхождения

Aetae 16.02.2011 01:01

Щито? 0_о
alert([
false !== 'yandex.ru_'.indexOf('yandex.ru'),
false !== 'andex.ru_'.indexOf('yandex.ru'),
false !== '_yandex.ru_'.indexOf('yandex.ru')
])

B@rmaley.e><e 16.02.2011 01:27

blessmaster, не смешивайте php и javascript. indexOf никогда не возвращает логических значений.

blessmaster 09.07.2011 23:18

Сорри, действительно смешал, сейчас приходится сразу с четырьмя языками работать, периодически их стандарты путаю ))

Имелось в виду:

alert([
-1 < 'yandex.ru_'.indexOf('yandex.ru'),
-1 < 'andex.ru_'.indexOf('yandex.ru'),
-1 < '_yandex.ru_'.indexOf('yandex.ru')
])


Такая запись удобнее, если мы сразу хотим воспользоваться возвращённым значением:
if (-1 < pos = 'www.yandex.ru'.indexOf('yandex.ru')) {
  ...
}

melky 10.07.2011 03:04

Цитата:

Сообщение от blessmaster (Сообщение 112620)
if (-1 < /*>*/*!*(*/!*/*<*/pos = 'www.yandex.ru'.indexOf('yandex.ru')) {
  ...
}

ты забыл скобку

странно как-то сравниваешь, наоборот :)

B@rmaley.e><e 10.07.2011 11:20

Цитата:

Сообщение от melky
странно как-то сравниваешь, наоборот

Yoda Conditions

melky 10.07.2011 11:31

вышел оттуда на другую статью

долго смеялся и сравнивал. спасибо)

Yuriy19 23.07.2013 09:41

Как удалить подстроку в строке
 
Здравствуйте. Помогите пожалуйста решить проблему:

есть 3 блока

<div id="text">
{galery}news1{/galery}Мы по-прежнему поддерживаем контакт» по этому вопросу с российскими властями, отметила представитель внешнеполитического ведомства США. «Это, безусловно, приоритетный вопрос, и мы продолжаем находиться в контакте на надлежащем уровне», — сказала Псаки.
</div>

<div id="text">
{galery}news2{/galery}Ее попросили прокомментировать предположение, что Сноуден, ранее подавший просьбу о предоставлении ему временного убежища в России, может уже в среду покинуть транзитную зону московского аэропорта Шереметьево, в которой он находится с 23 июня. «У меня нет независимого подтверждения насчет того, какие действия по этому делу может предпринять или не предпринять правительство России», — ответила Псаки.
</div>

<div id="text">
{galery}news3{/galery}По ее словам, американская администрация «продолжает призывать правительство России поступить правильным образом и вернуть Сноудена в Соединенные Штаты». «Насколько я понимаю, опираясь на последнюю имеющуюся информацию, он продолжает находиться в транзитной зоне аэропорта», — добавила Псаки.
</div>

Мне нужно удалить подстроку {galery}news1{/galery} в каждом блоке. Подскажите пожалуйста как это сделать?

Пробовал так:

var textZam = $('#text').html();
var regV = /\{galery\}news\d{0,}\{\/galery\}/g;
var result = textZam.replace(regV, '');
$('#text').text(result);

но это не то что нужно.


Часовой пояс GMT +3, время: 21:53.