文本块解析器

时间:2015-06-25 05:48:36

标签: javascript parsing text

所以我有一个网站,其中有一个文本框,您可以粘贴一段文本。您输入的字符串存储为变量。我正在处理一个解析字符串的javascript部分,并为您留下两个变量。你过去的部分看起来就像下面的那样。

<!-- 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 :(得分: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返回一个数组,其中第一个元素是匹配,第二个元素是第一个捕获组,因此您可以将捕获组的内容分配给变量。