2015-06-25 3 views
0

У меня есть веб-сайт с текстовым полем, в который вы можете вставить блок текста. Эта введенная вами строка сохраняется как переменная. Я работаю над секцией javascript, которая анализирует строку и оставляет вас с двумя переменными. Часть, которую вы прошли, выглядит примерно так, как показано ниже.Текстовый блок Parser

<!-- Note: comment. 
Comment/Comment, more comments "comment"--> 
<xx:aaa xx:bbb="sss" xx:ccc="SectionA;SectionB;SectionC=SectionD;SectionE=SectionF.SectionG.SectionH;,SectionI=SectionJ;SectionK=SectionL;SectionM=SectionN;SectionO=SectionP.SectionQ.SectionR;SectionS=/;"/> 
<vz:aaa xx:bbb="iii" xx:ccc="\SectionT\SectionU\_SectionV,\SectionW\SectionX,\SectionY\_SectionZ"/> 

Так введите строку и после синтаксического анализа вы будете иметь следующие переменные:

varaible1: SectionA;SectionB;SectionC=SectionD;SectionE=SectionF.SectionG.SectionH;,SectionI=SectionJ;SectionK=SectionL;SectionM=SectionN;SectionO=SectionP.SectionQ.SectionR;SectionS=/; 
variable2: \SectionT\SectionU\_SectionV,\SectionW\SectionX,\SectionY\_SectionZ 

У меня есть базовый парсер настройку, где он заменяет \ с запятыми, но не собирается разрезать его, очевидно. Здесь должно быть какое-то серьезное синтаксическое действие.

+1

И вопрос в том, что? –

+0

Вам нужно получить введенную строку, чтобы вернуть две переменные. Обе части объясняются. – Pie

ответ

1

Вы можете разобрать строку, используя регулярное выражение:

var string = 'Note: comment. Comment/Comment, more comments "comment" \ 
 
    <xx:aaa xx:bbb="sss" xx:ccc="SectionA;SectionB;SectionC=SectionD;SectionE=SectionF.SectionG.SectionH;,SectionI=SectionJ;SectionK=SectionL;SectionM=SectionN;SectionO=SectionP.SectionQ.SectionR;SectionS=/;"/> \ 
 
    <vz:aaa xx:bbb="iii" xx:ccc="\SectionT\SectionU\_SectionV,\SectionW\SectionX,\SectionY\_SectionZ"/>'; 
 
    var regex = /xx:ccc=\"([^\>]*)\"\/\>/g; 
 
    var variable1 = regex.exec(string)[1]; 
 
    var variable2 = regex.exec(string)[1]; 
 
    alert(variable1); 
 
    alert(variable2);

xx:ccc=\" матч против персонажей xx:ccc="

([^\>]*) захват нескольких символов, которые могут быть все что угодно, кроме закрывающей скобки

\"\/\> совпадение с символами "/>

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

+0

Хорошо, я попробую завтра. Будет ли это работать, если вы вставляете в него полный текст текста? Начиная с Он должен иметь возможность разбирать все это. Удаление тега комментария и разбор остальных. – Pie

+0

Да, это работает с комментарием. Code Snippet "для демонстрации. Поскольку вы можете видеть, что из кода комментарий является частью строки, которую он тестирует. – samgak

+0

Хорошо, поэтому я дал ему уйти, но у меня все еще есть некоторые проблемы. Я создал скрипт и поделился ссылкой для совместной работы и ссылку на ссылку, чтобы взглянуть на нее. https://jsfiddle.net/ThePieMonster/xe1wactq/2/#&togetherjs=9ydsEL1kxc https://jsfiddle.net/ThePieMonster/xe1wactq/2/ – Pie

Смежные вопросы