Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как правильно заменить подстроку. (https://javascript.ru/forum/misc/29828-kak-pravilno-zamenit-podstroku.html)

Ogara 12.07.2012 22:43

Как правильно заменить подстроку.
 
Подскажите как правильно в строке найти подстроку и заменить ее.
Вот пример строки:

var str = 'avtor:ivan+kino:dom 2+kniga:100%+';


Так вот в этой строке мы знаем ключи avtor, kino, kniga и знаем что пара всегда разделена : и заканчивается + . Надо найти подстроки ivan, dom 2, 100% и заменить на любые другие строки. Пытался с помощью регулярных выражений хотя бы достать эти строки по одной, например:

var pat = new RegExp("kniga:(.*?)\\+", "ig");
var my_sstring = pat.exec(str);


получал что my_sstring содержит ['kniga:100%', '100%'] вместо только '100%' . Помогите правильно решить проблему.

devote 12.07.2012 23:16

var str = 'avtor:ivan+kino:dom 2+kniga:100%+';

var arr = str.split("+"),
    part, parts = {};

while( part = arr.shift() ) {

    part = part.split(":");

    if ( part[0] ) {
        parts[ part[ 0 ] ] = part[ 1 ] || "";
    }
}

alert( [ parts.avtor, parts.kino, parts.kniga ] );

lord2kim 12.07.2012 23:16

Цитата:

Сообщение от Ogara (Сообщение 188395)
Подскажите как правильно в строке найти подстроку и заменить ее.
Вот пример строки:

var str = 'avtor:ivan+kino:dom 2+kniga:100%+';


Так вот в этой строке мы знаем ключи avtor, kino, kniga и знаем что пара всегда разделена : и заканчивается + . Надо найти подстроки ivan, dom 2, 100% и заменить на любые другие строки. Пытался с помощью регулярных выражений хотя бы достать эти строки по одной, например:

var pat = new RegExp("kniga:(.*?)\\+", "ig");
var my_sstring = pat.exec(str);


получал что my_sstring содержит ['kniga:100%', '100%'] вместо только '100%' . Помогите правильно решить проблему.

var str = 'avtor:ivan+kino:dom 2+kniga:100%+', new_str = "";
str = str.split("+");
for (i=0; i < str.length; i++) {
	if (str[i] == "") {  }
	else { new_str += str[i].split(":")[0]+":"+i+"+"; }
}
alert(new_str);

Deff 13.07.2012 03:12

Не ясная задача:
а) Каким макаром представлен массив поисковых слов ?
b) Заменяемые слова вводятся в ручном режиме или существует массив ?


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