侧边栏壁纸
博主头像
GabrielxD

列車は必ず次の駅へ。では舞台は?私たちは?

  • 累计撰写 674 篇文章
  • 累计创建 128 个标签
  • 累计收到 20 条评论

目 录CONTENT

文章目录

【模拟】HTML 实体解析器

GabrielxD
2022-06-19 / 0 评论 / 0 点赞 / 145 阅读 / 586 字
温馨提示:
本文最后更新于 2022-07-27,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

题目

1410. HTML 实体解析器


「HTML 实体解析器」 是一种特殊的解析器,它将 HTML 代码作为输入,并用字符本身替换掉所有这些特殊的字符实体。

HTML 里这些特殊字符和它们对应的字符实体包括:

  • 双引号:字符实体为 " ,对应的字符是 "
  • 单引号:字符实体为 ' ,对应的字符是 '
  • 与符号:字符实体为 & ,对应对的字符是 &
  • 大于号:字符实体为 > ,对应的字符是 >
  • 小于号:字符实体为 &amp;lt; ,对应的字符是 <
  • 斜线号:字符实体为 &amp;frasl; ,对应的字符是 /

给你输入字符串 text ,请你实现一个 HTML 实体解析器,返回解析器解析后的结果。

示例 1:

输入:text = "&amp;amp; is an HTML entity but &amp;ambassador; is not."
输出:"&amp; is an HTML entity but &amp;ambassador; is not."
解释:解析器把字符实体 &amp;amp; 用 &amp; 替换

示例 2:

输入:text = "and I quote: &amp;quot;...&amp;quot;"
输出:"and I quote: \"...\""

示例 3:

输入:text = "Stay home! Practice on Leetcode :)"
输出:"Stay home! Practice on Leetcode :)"

示例 4:

输入:text = "x &amp;gt; y &amp;amp;&amp;amp; x &amp;lt; y is always false"
输出:"x > y &amp;&amp; x < y is always false"

示例 5:

输入:text = "leetcode.com&amp;frasl;problemset&amp;frasl;all"
输出:"leetcode.com/problemset/all"

提示:

  • 1 <= text.length <= 10^5
  • 字符串可能包含 256 个ASCII 字符中的任意字符。

解题

方法一:API

思路

使用字符串的API replace 即可,注意要把 "&amp -> &" 的替换放最后,要不然在前面替换成 "&" 后会和后面本不该被替换的字串结合然后被替换。

代码

class Solution {
    public String entityParser(String text) {
        return text.replace("&quot;", "\"")
                   .replace("&apos;", "'")
                   .replace("&gt;", ">")
                   .replace("&lt;", "<")
                   .replace("&frasl;", "/")
                   .replace("&amp;", "&");
    }
}
0

评论区