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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рег. выражения: Замена значения, смайлы в строке чата 
:(
    Опции темы
godsgame
Дата 22.11.2005, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Опять же простенький вопрос по регам, на этот раз связаный с заменой.

строка: :001: абв :005: я тут...

результатирующая строка: <img src="001.gif" alt="001"> абв <img src="005.gif" alt="005"> я тут...

по сути - смайлы в чате.

Как такое сделать с помощью регов? У меня есть примитивный способ, который по кол-ву строчек равен кол-ву смайлов! Но думаю с помощью регов это будет примерно в одну строчку.
Добавлено @ 21:52
опечатался: смайлы В ЧАТЕ, а не на форуме
Добавлено @ 21:54
а вот и мой способ:
Код

while (tex.indexOf(':001:')>=0) tex = tex.replace(':001:', '<img src="001.gif" alt="001">');
...

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


Опытный
**


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

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



Можно так:

Код

var r=/:(\d\d\d):/g, v; 
while(v=r.exec(':001: абв :005: я тут...')) alert('<img src="'+v[1]+'.gif" alt="'+v[1]+'">');

PM MAIL WWW   Вверх
godsgame
Дата 23.11.2005, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Zeroglif
спасибо!
PM MAIL   Вверх
godsgame
Дата 18.12.2005, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Zeroglif
а как чтобы он это в строке подменял?

<img src....> абв....
PM MAIL   Вверх
Guest
Дата 18.12.2005, 01:39 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











godsgame

Поподробней напиши. Что дано, что в результате...
  Вверх
godsgame
Дата 18.12.2005, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



сначала:
s=':001: абв :005: я тут...';

в конце:
s='<img src='001.gif'> абв <img src='005.gif'> я тут...';
PM MAIL   Вверх
Zeroglif
Дата 18.12.2005, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

':001: абв :005: :000: я тут...'.replace(/:(\d\d\d):/g, '<img src="$1.gif">' );

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


Бывалый
*


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

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



Zeroglif
не работает.
Добавлено @ 13:34
Цитата
Creator говорит: :001: :002: :003: :004:

Добавлено @ 13:37
сори моя ошибка... помогло
Код

t = t.replace(/:(\d\d\d):/g, '<img src="$1.gif">' );

PM MAIL   Вверх
godsgame
Дата 4.9.2006, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



ммм.. возможно не совсем к этой теме (но создавать новую по пустякам тоже не очень...), но как сделать чтобы это:

Код

t = t.replace(/:(\d\d\d):/g, '<img src="$1.gif">' );


выполнялось только 3 раза? (квантикатор жадности)

пробовал так:
Код

t = t.replace(/[:(\d\d\d):]{3}/g, '<img src="$1.gif">' );


и другие возможные варианты, но нужный не подобрал +)
PM MAIL   Вверх
Sardar
Дата 4.9.2006, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Изврат, но так можно:
Код
var max = 3;
t = t.replace(/:(\d{3}):/g, function(m){ return --max>=0? '<img src="'+m[1]+'.gif">': m[0] ;});


Фактически рег заменяет все вхождения паттерна, просто для первых трёх возвращаем особое, а для остального возвращаем то что нашли.


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


Опытный
**


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

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



Sardar,

При риплейсе с функцией там нет массива в аргументах. В этом конкретном примере там просто второй формальный параметр можно задать для фрагмента (\d{3}).
PM MAIL WWW   Вверх
Sardar
Дата 5.9.2006, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Zeroglif, от млин, не проверяю код, привык к человеческим регам, спасибо smile

Код
var max = 3;
t = t.replace(/:(\d{3}):/g, function(m, rp){ return --max>=0? '<img src="'+rp+'.gif">': m ;});



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


Бывалый
*


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

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



Sardar, 
Zeroglif, 

спасибо работает!

Это сообщение отредактировал(а) godsgame - 5.9.2006, 21:19
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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