Haskell: удаляет html-символы в строке - PullRequest
4 голосов
/ 18 ноября 2010

Я хочу взять строку, содержащую html-символы, такие как   и т. Д., И заменить их буквенными строковыми символами.Я получаю данные через API Twitter, и текст содержит эти объекты.Кто-нибудь знает о существующей библиотеке, которая делает это?

Спасибо за вашу помощь!

Ответы [ 3 ]

3 голосов
/ 06 февраля 2015

Я построил следующую функцию с функциями из пакета tagsoup.Он обрабатывает все именованные и числовые объекты из стандарта HTML5 (более 2000, см. Список ).

import   qualified          Text.HTML.TagSoup as TS

decodeHTMLentities :: (StringLike str, Show str) => str -> str   
decodeHTMLentities s = TS.fromTagText $ head $ TS.parseTags s

StringLike имеет экземпляры для String, Lazy и Strict ByteString и Text.

Неизвестные объекты останутся без изменений.Если вы хотите получить предупреждение о неизвестных объектах, используйте:

> parseTagsOptions parseOptions{optTagWarning=True} "&asdasd;"
[TagText "&asdasd;",TagWarning "Unknown entity: asdasd"] 
3 голосов
/ 18 ноября 2010

Пакет Web.Encodings для Hackage выглядит многообещающе (функция decodeHtml):

http://hackage.haskell.org/packages/archive/web-encodings/0.3.0.2/doc/html/Web-Encodings.html

0 голосов
/ 04 июля 2011

Здравствуйте, попробуйте код ниже, он будет работать

labelTR = labelTR.replace(/(?: |")/g,'');
...