2015-06-25 100 views
0

所以我有一個網站,其中有一個文本框,您可以粘貼一個文本塊。你輸入的字符串被存儲爲一個變量。我正在研究一個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

您需要獲取您輸入的字符串以返回這兩個變量。這兩個部分都解釋了。 – 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

好的,我明天再試一次。如果你將全部文本粘貼到它裏面,它會起作用嗎?從<! - 註釋開始到_SectionZ「/>最後,它必須能夠解析整個事物。刪除註釋標記並解析其餘部分。 – Pie

+0

是的,它可以處理註釋。 Code Snippet「進行演示,你可以從代碼中看到註釋是正在測試的字符串的一部分 – samgak

+0

好吧,我給了它一個但仍然有一些問題我做了一個小提琴並共享了一個協作鏈接和一個共享鏈接來看看它 https://jsfiddle.net/ThePieMonster/xe1wactq/2/#&togetherjs=9ydsEL1kxc https://jsfiddle.net/ThePieMonster/xe1wactq/2/ – Pie