Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.05.2010, 21:51
Интересующийся
Отправить личное сообщение для KOPCAP Посмотреть профиль Найти все сообщения от KOPCAP
 
Регистрация: 08.02.2009
Сообщений: 22

Помогите с регуляркой
Суть в том что есть набор координат оформленных таким образом:
Код:
{
( -128 -128 128 ) ( -128 768 128 ) ( 0 768 128 )
( -128 768 0 ) ( -128 -128 0 ) ( 0 -128 0 )
( -128 -128 0 ) ( -128 768 0 ) ( -128 768 128 )
( 0 768 0 ) ( 0 -128 0 ) ( 0 -128 128 )
( -128 768 0 ) ( 0 768 0 ) ( 0 768 128 )
( 0 -128 0 ) ( -128 -128 0 ) ( -128 -128 128 )
}
После каждой из строче кроме { и } есть некоторый текст.
Задача состоит в том, что этот "объект" нужно переместить в пространстве по первым двум координатам. В общем должно получиться так:
Код:
( "+(x*128-128*1)+" "+(y*128+768*1)+" 0 )
Это только для одной скобки изначально она такая:
Код:
( -128 768 0 )
Т.е. что делает скрипт: заменяет координату Х с -128 на "+(х*128-128*1)+" Для чего это нужно: будет программа-конструктор, на основе таблицы, где в каждой клетке можно задать узор, допустим треугольник или квадрат. Потом программа считывает координату этой клетки, и подставляет в Х или У в коде, допустим Х=2 У=4 тогда программа выдаст для той скобки код:
Код:
( 128 1280 0 )
Возможно я не понятно объяснил, спросите, где непонятно.
P.s.
Пытался делать регуляркой, но не смог написать должного скрипта.
Ответить с цитированием
  #2 (permalink)  
Старый 21.05.2010, 23:37
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

Набор обязательно оформлен так? Просто если есть возможность поменять формат, то лучше привести его к формату json, тогда не придется возиться с регулярками, а будет простая работа с массивом.
__________________
In WEB We Trust
У всех есть своя темная сторона...
Ответить с цитированием
  #3 (permalink)  
Старый 22.05.2010, 21:26
Интересующийся
Отправить личное сообщение для KOPCAP Посмотреть профиль Найти все сообщения от KOPCAP
 
Регистрация: 08.02.2009
Сообщений: 22

Увы изначальный код задается программой, именно той, в которую нужно будет экспортировать. В общем я в той программе делаю базовые фигуры, а потом эти фигуры используются в моем скрипте(меняются их координаты) затем выдается итоговый код и получается узор, который потом я буду обрабатывать дальше.
Хотя мне будет достаточно скрипта, который допустим из <textarea> может выделить каждую строчку, допустим если бы была функция, допустим get_str(n) где n номер строки в textarea то можно каждую строчку обработать, а до этого я дошел.
В общем если можно так сделать то наверное легче будет так..

Последний раз редактировалось KOPCAP, 22.05.2010 в 21:30.
Ответить с цитированием
  #4 (permalink)  
Старый 23.05.2010, 12:22
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Несколько реплейсов и получится json.
Ответить с цитированием
  #5 (permalink)  
Старый 23.05.2010, 12:36
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

Трех должно хватить (а может даже и двух) - заменить все скобки, поставить запятые между скобками и между числами.
__________________
In WEB We Trust
У всех есть своя темная сторона...
Ответить с цитированием
  #6 (permalink)  
Старый 25.05.2010, 11:12
Ламер
Отправить личное сообщение для DooMer Посмотреть профиль Найти все сообщения от DooMer
 
Регистрация: 19.02.2010
Сообщений: 295

Грубовато но дееспособно

var stroka = "{\n( -128 -128 128 ) ( -128 768 128 ) ( 0 768 128 )\n( -128 768 0 ) ( -128 -128 0 ) ( 0 -128 0 )\n( -128 -128 0 ) ( -128 768 0 ) ( -128 768 128 )\n( 0 768 0 ) ( 0 -128 0 ) ( 0 -128 128 )\n( -128 768 0 ) ( 0 768 0 ) ( 0 768 128 )\n( 0 -128 0 ) ( -128 -128 0 ) ( -128 -128 128 )\n}";
alert(stroka);
alert(stroka.replace("{\n( ","[{").replace(" )\n}","}]").replace(/\n/gi,",").replace(/ \) \( /g,"},{").replace(/ \),\( /g,"},{").replace(/ /g,","));
Ответить с цитированием
  #7 (permalink)  
Старый 25.05.2010, 11:31
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

И? Какаха вышла.
var str = "{\n( -128 -128 128 ) ( -128 768 128 ) ( 0 768 128 )\n( -128 768 0 ) ( -128 -128 0 ) ( 0 -128 0 )\n( -128 -128 0 ) ( -128 768 0 ) ( -128 768 128 )\n( 0 768 0 ) ( 0 -128 0 ) ( 0 -128 128 )\n( -128 768 0 ) ( 0 768 0 ) ( 0 768 128 )\n( 0 -128 0 ) ( -128 -128 0 ) ( -128 -128 128 )\n}";

alert(str);

alert(str.replace(/\(/g, '[').
    replace(/\)/g, ']').
    replace(/\]\s+\[/g, '],\n[').
    replace(/([0-9.+-]+)(?=\s+([0-9.+-]+))/g, '$1,')
);
Ответить с цитированием
  #8 (permalink)  
Старый 25.05.2010, 19:56
Интересующийся
Отправить личное сообщение для KOPCAP Посмотреть профиль Найти все сообщения от KOPCAP
 
Регистрация: 08.02.2009
Сообщений: 22

Прошу заметить, что после трех скобок текст такого вида:
Код:
C1A3WALL01 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
Который тоже выводится, там есть квадратные скобки, они мешать не будут?
Ответить с цитированием
  #9 (permalink)  
Старый 25.05.2010, 21:37
Интересующийся
Отправить личное сообщение для KOPCAP Посмотреть профиль Найти все сообщения от KOPCAP
 
Регистрация: 08.02.2009
Сообщений: 22

Так, я проблему решил.
Решил следующим путем:
Написал функцию, которая возвращает значение строчки textarea:
function GetTAStr(num, obj){
 objkt=document.getElementById(obj);
 text=objkt.value;
 text="\n"+text+"\n";
 for(i=1; i<(num); i++){
  text=text.replace("\n", "");
 }
 var reg = /\n[^(\n)]*\n/;
 text=text.match(reg);
 text=(text+"\n").replace("\n", "");
 return(text);
}

где num - номер строки, а obj - id textarea.
В итоге я могу каждую строчку обрабатывать по отдельности, а к одной строчке у меня уже есть скрипт, т.к. раньше делал через осла, который понимает чтение файлов через activex , а там было построчно. Все же спасибо всем за ваши ответы, узнал новое для себя
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с регуляркой tazododu Общие вопросы Javascript 11 01.03.2010 09:42
помогите с регуляркой ... motoroller Элементы интерфейса 1 23.11.2009 22:01
помогите с регуляркой Holod Общие вопросы Javascript 1 19.08.2009 12:02
помогите задать селектор! mkrylov jQuery 2 28.06.2009 20:34
Помогите с регуляркой... alexKniaz AJAX и COMET 0 03.11.2008 01:16