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

Поиск:

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


Бывалый
*


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

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



Такая задача:

Текстовое поле чата (то, куда вводят сообщения) может принимать вид:
1) private to [nick1][nick2][nick3]: abc
2) public to [nick1][nick2][nick3]: abc
3) message

После выполнения JS-скрипта должно выйти такое:

1)
Код

type = 'private';
nicks = 'nick1/nick2/nick3';
message = 'abc';


2)
Код

type = 'public';
nicks = 'nick1/nick2/nick3';
message = 'abc';


3)
Код

type = '';
nicks = '';
message = 'message';


Т.е надо строку чата разложить на переменные.

Как такое лучше всего сделать? регулярными выражениями или как? Буду очень признателен за исходник smile

smile
Добавлено @ 22:45
обратите внимание, что сообщение отделяется от списка ников с помощью ':', таким образом - сообщение также может содержать '[' и ']' и текст, что между ними, не будет считатся за ник!
PM MAIL   Вверх
Ciber SLasH
Дата 21.11.2005, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

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



Код
<script type='text/javascript'>
var t1 = "private to [D hh  76_@#][--EE--][-=ee35$=-]: rgrog  rptjk  13124 $$$$$$%^&^&^ rykroy SSFff ";
var t2 = "public to [D hh  76_@#][--EE--][-=ee35$=-]: rgrog  rptjk  13124 $$$$$$%^&^&^ rykroy SSFff ";
var t3 = "^&^&^& rgrog  rptjk  13124 $$$$$$%^&^&^ rykroy SSFff [drr] ()";
var type = nicks = message = '';
var tmp;

tmp = /^(private to|public to)? ?\[?([^\[\]]+)\]?\[?([^\[\]]+)\]?\[?([^\[\]]+)\]?:? ?(.*)/.exec(t1);
if (tmp[1] != 'private to' && tmp[1] != 'public to') {
    message = tmp[0];
    document.write(    '<span style="color: navy; font-weight: bold">Source string: </span>'+ tmp[0] +'<hr>'+
                    '<b>type: </b>'+ type +'<br>'+
                    '<b>nicks: </b>'+ nicks +'<br>'+
                    '<b>message: </b>'+ message);
}
else {
    type = tmp[1];
    nicks = tmp[2]+ '/' +tmp[3]+ '/' +tmp[4];
    message = tmp[5];
    document.write(    '<span style="color: navy; font-weight: bold">Source string: </span>'+ tmp[0] +'<hr>'+
                    '<b>type:</b> '+ type +'<br>'+
                    '<b>nicks:</b> '+ nicks +'<br>'+
                    '<b>message:</b> '+ message);
}
</script>

для смены строки — замени параметр метода exec() в 8-ой строке.
Рег будет работать только с никами, в которых нет символов квадратных скобок.
PM   Вверх
Sardar
Дата 22.11.2005, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Регами очень просто:

Код
function parseMsg(str) {
  var reg=/^(?:\s*(private|public)\s+to\s+((?:\[[^\]]+\])+)\s*:\s*)?(.+)$/;
  var rpreg=/\[([^\]]+)\]/g;
  var comp=reg.exec(str);
  var ncks=comp[2].replace(rpreg, "$01/");
  return [comp[1], ncks.substring(0, ncks.length-1), comp[3]];
}

alert(parseMsg("private to [nick1][nick2][nick3]: abc"));
alert(parseMsg("public to [nick1][nick2][nick3]: abc"));
alert(parseMsg("message"));


Ciber SLasH у тебя ограниченное количество ников, до 3 по моему.


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


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

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



2Sardar:
У меня рег до 3-х ников — автор вопроса не уточнил, что ников может быть много, поэтому я так и оставил.

Однако круто ты замутил с регами... smile
PM   Вверх
godsgame
Дата 22.11.2005, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ciber SLasH
В полне логично, что ников может быть много... просто забыл дописать "[...]"

Sardar
То, что надо!
Цитата
Однако круто ты замутил с регами... smile




Всем огромное спасибо! Я бы очень долго сэтим провозился.
PM MAIL   Вверх
fregs
Дата 22.11.2005, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



godsgame а чего возиться... зашел в любую онлайн игру и посмотрел код...
PM MAIL WWW   Вверх
godsgame
Дата 22.11.2005, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



fregs
Цитата
а чего возиться... зашел в любую онлайн игру и посмотрел код...


Уже сколько раз я пытался такое проделать.... Это касается и ПХП скриптов (с каково-нить сайта типа woweb) и JS-скриптов с подобных игр, но толи у меня мозгов мало толи еще что, но разобратся я в них не мог (или не хотел), и каждый раз делал вывод, что легче написать самому! Возможно это не самый экономный по времени вариант, но тем не менее я смогу в любой момент что-то доработать, переделать. К тому же всегда есть форум, на котором умные люди могут реально помочь.

И еще, конечно это мало-вероятно, но вдруг мой вариант окажется самым оптимальным, лучшим, быстрым?

//громко смеюсь от одной только мысли, что мои скрипты каким-либо образом могут оказатся лучше БК-шных smile

Это сообщение отредактировал(а) godsgame - 22.11.2005, 15:37
PM MAIL   Вверх
Aliance
Дата 23.11.2005, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



А интерес красть скрипты, интереснее свои писать smile
А на счет лучше, тут все относительно. Не главное это, имхо, канечно
PM MAIL WWW ICQ Skype   Вверх
fregs
Дата 23.11.2005, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата
//громко смеюсь от одной только мысли, что мои скрипты каким-либо образом могут оказатся лучше БК-шных

smile могут, поверь... иначе не было бы клиентов для БК

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


 




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


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

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