24.07.2013, 14:27
|
Профессор
|
|
Регистрация: 02.04.2013
Сообщений: 225
|
|
Подскажите как заменить в строке значения между маркерами?
Привет, есть веб страница с ява скриптом (рисует по данным график)
у меня апликация работает на яве тоже, и умееть отображать в контейнере эту страницу, изначально в странице указан начальный масив даных что бы было что рисовать. В базе даных страница храница построчно, тоесть массивом - елемент = строка.
Я из апликации хочю заменить блок данных на свой. Как это проще всего сделать? Перед выводом массив соединяю join.
брутально решение представляю так:
вставить маркер перед заменяемыми даными: //![ и вконце //!]
Прогнать все елементы массива через проверку, и если не найден маркер - складывать в выходящию переменую, если найден первый маркер - вставить свой блок данных в переменную, не добавлять данные пока не будет обнаружен второй маркер.
Но как то громоздко получаеться может кто подскажет решение попроще? Что то типа с репласе - но не сображу как им задать диапозон на вырезку
Последний раз редактировалось Kvark, 24.07.2013 в 14:53.
Причина: уточнил
|
|
24.07.2013, 14:33
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
можно узреть код, что бы было хоть чуть-чуть понятнее...))
|
|
24.07.2013, 14:42
|
Профессор
|
|
Регистрация: 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"];
//!]
мне нужна подсказка как сделать замену всего того что между //![ и //!] бо количество строк между ними может быть разное
|
|
24.07.2013, 15:09
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
если вы хотите изменить именно код js, то я думаю без eval'ов не обойдется...
а найти этот блок можно с помощью регулярки
|
|
24.07.2013, 15:10
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
и что то мне подсказывает.. что вы хотите, немного извращение.. ИМХО))
|
|
24.07.2013, 15:22
|
Аспирант
|
|
Регистрация: 01.04.2013
Сообщений: 58
|
|
заменой по регулярке, я же как понимаю все эти данные в строке
/\/\/!\[[\d\s\D]*?\/\/!\]/
ну или вместо [\d\s\D] - . но с модификатором s
|
|
24.07.2013, 15:43
|
Профессор
|
|
Регистрация: 02.04.2013
Сообщений: 225
|
|
да по регулярке - тока я не знаю как ее собрать
|
|
24.07.2013, 16:55
|
Профессор
|
|
Регистрация: 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);
|
|
24.07.2013, 17:19
|
Профессор
|
|
Регистрация: 02.04.2013
Сообщений: 225
|
|
да, спасибо, подошло, я ответил просто невнятно, мол до того как он показал чувствовал что как то можно, но незнал как конкретно, для меня регулярка темный лес, но вот уже с вашей помощью начинаю разбираться
|
|
|
|