2010-12-14 106 views
0

我試圖通過JavaScript分析一段文字,並且閱讀了解到,用正則表達式解析HTML是quite evil。在分析它之前,我想刪除我的文本中更險惡的部分。 (1)從[caption][/caption]和(2)將所有文本都存儲在一個新的變量中?(1)從[caption][/caption]如何從Javascript字符串中刪除大塊文本?

Sed rutrum enim sit amet sem fringilla egestas placerat mauris pretium. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ultricies egestas malesuada. Etiam rhoncus eros a leo imperdiet vitae tincidunt purus laoreet. Mauris ut mauris quam, sed pharetra urna. Etiam eu enim mauris, vitae bibendum orci. Quisque ac sapien massa, at dignissim tellus. 

[caption id="blah" align="alignleft" width="123" caption="Lorem ipsum dolor sit, consectetur adipiscing elit."]<a href="http://www.google.com/something"><img title="Lorem ipsum dolor sit, consectetur adipiscing elit." src="http://google.com/something/else.png" alt="Lorem ipsum dolor sit, consectetur adipiscing elit." width="345" /></a>[/caption] 

Aenean faucibus mi sit amet leo suscipit nec egestas leo ultrices. Integer tincidunt, urna quis varius accumsan, urna quam congue nulla, ut ornare orci purus in ligula. Suspendisse varius, tellus aliquam tincidunt, ante semper elit, sit amet tincidunt elit augue eget odio. Vivamus sit amet tincidunt massa. Sed nunc ligula, feugiat quis volutpat congue, eleifend in tellus. Curabitur ut dictum felis. Nunc sodales euismod leo, in commodo elit ornare hendrerit. Cras luctus eros id nisl vestibulum elementum. Maecenas ut neque turpis. Donec ornare hendrerit rutrum. Non nibh leo, dictum ullamcorper dui. 
+1

你已經使用過'[caption]'(帶方括號)......你的意思是''(帶有斜角括號)嗎?在S.O的代碼塊中使用斜角括號沒有問題。 – Lee 2010-12-14 21:44:09

+0

感謝您的評論。相信與否我正在處理一個喜歡使用它自己的僞代碼的文本編輯。我注意到「正則表達式會很痛苦」的規則同樣如果不是更相關的話。 – buley 2010-12-15 07:02:07

回答

1

您可以使用.split()

var temp = yourText.split("[caption") 

這給了你:

溫度[0]與之前的 「[標題」 一切

臨時[1]的一切「之後[標題「

然後,您可以繼續拆分/加入數組碎片到elimina任何一串藥水。

+1

如果您有多個「[caption]」,特別是它們是*嵌套*:[caption]什麼[caption] stuff [/ caption] other stuff [/ caption]'',那麼請小心。 – Lee 2010-12-14 21:49:23

2

您還可以使用正則表達式:

var split = text.split(/\[\/?caption[^\]]*\]/); 

,並採取分流[1]因此

1
  • 如果你解析純文本有沒有辦法做到這一點比正則表達式更容易,至少在js中沒有內置的功能來完成它。
  • 如果你在瀏覽器中解析HTML,有很多簡單的方法可以使用DOM樹和DOM實現它,afaik是推薦的方法。像jQuery這樣的js框架使得這個任務儘可能簡單。
  • 如果您在服務器端解析HTML,例如通過node.js,還有用於創建和使用像jsdom一樣的DOM的庫,並且可以通過使用DOM函數來實現。
相關問題