Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена в строке, экранирование 
:(
    Опции темы
Fuksito
Дата 13.3.2008, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



Мне в строке, к примеру:
My name is %s and second name %s

нужно сделать замены из масива замен
Код

rep[0] = 'John';
rep[1] = 'Smith';


Заменяю:
Код

for(i=1; i<=rep.lenth; i++){
var re = /%s/;
str = str.replace(re, rep[i]);
}

получаю:
My name is John and second name Smith


Вопрос:
Что добавить чтобы если задать строку 
My name is %s and second name \%s

Вывело:
My name is John and second name \%s

                                                                                   ?

PM MAIL   Вверх
Sardar
Дата 13.3.2008, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



Код
var reg = /(%%)|(%s)/g;
        var str = "My name is %s and second name %%s - - - %s";

        rep = ['John', 'Smith'], next = 0;
        str = str.replace(reg, function(o,e,s) {
            return e || rep[next++];
        });

        alert(str);



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Fuksito
Дата 13.3.2008, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



А можете пожалуйста обїяснить что тут за что отвечает, атотрудно понять и мне нужен не глобльній поиск
PM MAIL   Вверх
Sardar
Дата 13.3.2008, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



У тебя список имён. Ты пытаешься заменить каждое вхождение %s на следующее имя из списка (это то что делал твой цикл, только криво, т.к. само имя не могло иметь %s).

Рег ловит %% или %s, .т.е. %%s - заменим на %s, а не на имя. Вернее сейчас на %%s, т.к. ошибся, замени 6 строку на return e? "%" : rep[next++];  smile

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


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Fuksito
Дата 13.3.2008, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



Очень прикольно, спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0427 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.