【问题标题】:Decode HTML entities into plain text [closed]将 HTML 实体解码为纯文本 [关闭]
【发布时间】:2018-11-12 19:10:10
【问题描述】:

我有一个包含HTML entities 的字符串(例如± - 加减号)。

如何获取将这些 HTML 实体解码为纯文本的字符串?

例子:

 Input          |  Output
----------------+-------------
±        |    ±
Ben & Jerry | Ben&Jerry

【问题讨论】:

  • 使用字典?无论如何,这个问题非常不清楚。请澄清。
  • "使用字典?"我不知道,你是什么意思。我有一个字符串,例如strText = "Ben & Jerry" 我想得到strText = "Ben&Jerry"。但提到,这只是一个例子。我在这个字符串中最多有 10k 个单词,其中的实体名称比 & 多。您可以在列表中看到所有可能的实体名称,我给了您 URL。所以,我的问题是,如何转换字符串 - 回到我的示例 - 从 strText = "Ben & Jerry"strText = "Ben&Jerry"。我错过了什么解释吗?
  • 我按照我认为的本质重新表述了您的问题。请检查这是否符合您的期望。注意:这与 ASCII 无关。
  • 字典(来自 VBScript,但可以在 VBA 中使用 CreateObject() 创建)是键值映射的自然数据结构,这就是您隐含的问题。

标签: vba string ascii


【解决方案1】:

您可以创建一个HTMLDocument 对象,将 HTML 存储在其中,并从中获取它的文本版本:

Function HtmlDecode(str)
    Dim dom

    Set dom = CreateObject("htmlfile")
    dom.Open
    dom.Write str
    dom.Close
    HtmlDecode = dom.body.innerText
End Function

decoded = HtmlDecode("±")   ' =  "±"

【讨论】:

  • 谢谢。有没有机会在不创建新文件的情况下“转换”它?
  • 新文件是什么意思?这里没有创建文件。不要被对象的名称或方法的名称所迷惑。创建的对象存在于内存中。它是HTMLDocument 类的一个实例。不涉及文件(尽管名称“htmlfile”具有误导性)。
  • 啊,好吧。我很困惑,因为括号中有“htmlfile”。谢谢,就是我要找的。​​span>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
  • 2017-07-04
  • 2015-06-29
相关资源
最近更新 更多