Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.07.2013, 14:27
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

Подскажите как заменить в строке значения между маркерами?
Привет, есть веб страница с ява скриптом (рисует по данным график)
у меня апликация работает на яве тоже, и умееть отображать в контейнере эту страницу, изначально в странице указан начальный масив даных что бы было что рисовать. В базе даных страница храница построчно, тоесть массивом - елемент = строка.

Я из апликации хочю заменить блок данных на свой. Как это проще всего сделать? Перед выводом массив соединяю join.

брутально решение представляю так:
вставить маркер перед заменяемыми даными: //![ и вконце //!]

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

Но как то громоздко получаеться может кто подскажет решение попроще? Что то типа с репласе - но не сображу как им задать диапозон на вырезку

Последний раз редактировалось Kvark, 24.07.2013 в 14:53. Причина: уточнил
Ответить с цитированием
  #2 (permalink)  
Старый 24.07.2013, 14:33
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

можно узреть код, что бы было хоть чуть-чуть понятнее...))
Ответить с цитированием
  #3 (permalink)  
Старый 24.07.2013, 14:42
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

В самом коде смысла нету но приведу что бы было наглядней что я хочю сделать, есть такое:
//![
//colors for drawings 
var colorspal = ['red', 'blue', 'green', 'purple', 'orange', 'aqua', 'gold', 'gray'];
//status captions
var scaptions = ["Very bad", "Amiss", "Poorly", "Illy", "Commonly", "So so", "Good", "Fine", "Perfect", "Outstanding"];
//status colors
var scolors = ["#CD0A31", "#F43445", "#F44C34", "#F47634", "#F49C34", "#F4C934", "#F4F434", "#D5F434", "#AEF434", "#5BBE3C"];
//!]

мне нужна подсказка как сделать замену всего того что между //![ и //!] бо количество строк между ними может быть разное
Ответить с цитированием
  #4 (permalink)  
Старый 24.07.2013, 15:09
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

если вы хотите изменить именно код js, то я думаю без eval'ов не обойдется...
а найти этот блок можно с помощью регулярки
Ответить с цитированием
  #5 (permalink)  
Старый 24.07.2013, 15:10
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

и что то мне подсказывает.. что вы хотите, немного извращение.. ИМХО))
Ответить с цитированием
  #6 (permalink)  
Старый 24.07.2013, 15:22
Аспирант
Отправить личное сообщение для edison Посмотреть профиль Найти все сообщения от edison
 
Регистрация: 01.04.2013
Сообщений: 58

заменой по регулярке, я же как понимаю все эти данные в строке
/\/\/!\[[\d\s\D]*?\/\/!\]/
ну или вместо [\d\s\D] - . но с модификатором s
Ответить с цитированием
  #7 (permalink)  
Старый 24.07.2013, 15:43
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

да по регулярке - тока я не знаю как ее собрать
Ответить с цитированием
  #8 (permalink)  
Старый 24.07.2013, 16:55
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

ну вам же edison показал готовую регулярку..
var str = '\
//![\n\
//colors for drawings \n\
var colorspal = [\'red\', \'blue\', \'green\'];\n\
//status captions\n\
var scaptions = ["Very bad", "Amiss", "Poorly", "Illy", "Commonly", "So so", "Good", "Fine", "Perfect", "Outstanding"];\n\
//status colors\n\
var scolors = ["#CD0A31", "#F43445", "#F44C34", "#F47634", "#F49C34", "#F4C934", "#F4F434", "#D5F434", "#AEF434", "#5BBE3C"];\n\
//!]\ ';

console.log(str);
var str = str.replace(/\/\/!\[[\d\s\D]*?\/\/!\]/, 'new text');
console.log(str);
Ответить с цитированием
  #9 (permalink)  
Старый 24.07.2013, 17:19
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

да, спасибо, подошло, я ответил просто невнятно, мол до того как он показал чувствовал что как то можно, но незнал как конкретно, для меня регулярка темный лес, но вот уже с вашей помощью начинаю разбираться
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести данные из PHP Sherminator Events/DOM/Window 2 07.08.2012 20:11
Не правильно работает прокрутка, подскажите как сделать правильно? denfer12 Общие вопросы Javascript 0 09.05.2012 00:34
Подскажите как мне вставить таблицу на сайт Sohne Серверные языки и технологии 5 06.10.2011 19:12
Массив как часть параметра diprom Javascript под браузер 3 21.09.2011 00:08
Подскажите как вставить переменную в RegExp c модификаторами Дмитрий-Solod Общие вопросы Javascript 2 16.11.2010 19:30