我正在尋找一個包含html字符實體(如
等)的字符串,並用字符串字符替換它們。我通過twitter的API獲取數據,文本包含這些實體。任何人都知道現有的圖書館是這樣做的嗎?Haskell:刪除字符串中的html字符實體
感謝您的幫助!
我正在尋找一個包含html字符實體(如
等)的字符串,並用字符串字符替換它們。我通過twitter的API獲取數據,文本包含這些實體。任何人都知道現有的圖書館是這樣做的嗎?Haskell:刪除字符串中的html字符實體
感謝您的幫助!
的Web.Encodings包裝上hackage看起來很有希望(在decodeHtml功能):
http://hackage.haskell.org/packages/archive/web-encodings/0.3.0.2/doc/html/Web-Encodings.html
你好嘗試下面的代碼,將制定出
labelTR = labelTR.replace(/(?: |")/g,'');
我建議你查看有多少可能的實體:http://en.wikipedia。org/wiki/List_of_XML_and_HTML_character_entity_references 我不認爲正則表達式是要走的路。此外,您的解決方案不在haskell中。 – andsens 2012-12-18 23:26:39
雖然這可能有效,但爲自己寫這些任務的函數並不是一個好主意。一個圖書館也會包含更少的錯誤,錯誤等。 – 2015-02-09 14:38:25
我建下面的函數與功能來自包tagsoup
。它處理來自HTML5標準的所有命名和數字實體(超過2000,see the list)。
import qualified Text.HTML.TagSoup as TS
decodeHTMLentities :: (StringLike str, Show str) => str -> str
decodeHTMLentities s = TS.fromTagText $ head $ TS.parseTags s
StringLike
有實例爲String
,懶惰和嚴格ByteString
和Text
。
未知實體將保持不變。如果你想對未知實體使用警告:
> parseTagsOptions parseOptions{optTagWarning=True} "&asdasd;"
[TagText "&asdasd;",TagWarning "Unknown entity: asdasd"]
感謝您的編輯湯姆,滑了我的腦海。 – Hojdra 2010-11-18 18:34:55
你會考慮改變接受的答案(這是一個廢棄的圖書館,會錯過許多實體)? – 2016-04-24 11:58:55