当前位置: 首页 > news >正文

在JavaScript中,将包含HTML实体字符的字符串转换为普通字符

在JavaScript中,将包含HTML实体字符的字符串转换为普通字符有几种方法:

1. 使用 DOMParser(推荐)

function decodeHTMLEntities(text) {const textArea = document.createElement('textarea');textArea.innerHTML = text;return textArea.value;
}// 或者使用 DOMParser
function decodeHTMLEntities(text) {const doc = new DOMParser().parseFromString(text, 'text/html');return doc.documentElement.textContent;
}// 示例
const encodedString = "Hello & Welcome <world>";
const decodedString = decodeHTMLEntities(encodedString);
console.log(decodedString); // "Hello & Welcome <world>"

2. 使用 textarea 元素

function decodeHTMLEntities(text) {const textarea = document.createElement('textarea');textarea.innerHTML = text;return textarea.value;
}// 示例
const result = decodeHTMLEntities("John &amp; Jane &copy; 2023");
console.log(result); // "John & Jane © 2023"

3. 使用正则表达式替换(适用于常见实体)

function decodeHTMLEntities(text) {const entities = {'&amp;': '&','&lt;': '<','&gt;': '>','&quot;': '"','&#39;': "'",'&nbsp;': ' ','&copy;': '©','&reg;': '®'};return text.replace(/&[a-z]+;/g, match => {return entities[match] || match;});
}// 示例
const result = decodeHTMLEntities("Price &lt; $100 &amp; free shipping");
console.log(result); // "Price < $100 & free shipping"

4. 处理数字实体

function decodeHTMLEntities(text) {return text.replace(/&#(\d+);/g, (match, dec) => {return String.fromCharCode(dec);}).replace(/&#x([0-9a-f]+);/gi, (match, hex) => {return String.fromCharCode(parseInt(hex, 16));});
}// 示例
const result = decodeHTMLEntities("A&#65; B&#x42;");
console.log(result); // "AA BB"

5. 完整的解决方案

function decodeHTMLEntities(text) {// 创建临时元素const textArea = document.createElement('textarea');textArea.innerHTML = text;// 处理数字实体(如果需要)let decoded = textArea.value;decoded = decoded.replace(/&#(\d+);/g, (match, dec) => {return String.fromCharCode(dec);});return decoded;
}// 或者使用更简单的方法
function decodeHTMLEntities(text) {const element = document.createElement('div');element.innerHTML = text;return element.textContent || element.innerText || '';
}

使用示例

// 测试各种HTML实体
const testCases = ["Hello &amp; World","Price &lt; $100 &gt; $50","&quot;Quote&quot; and &#39;apos&#39;","Copyright &copy; 2023","Spaces&nbsp;&nbsp;&nbsp;here","A&#65; B&#x42; C&#67;"
];testCases.forEach(test => {console.log(`原始: ${test}`);console.log(`解码: ${decodeHTMLEntities(test)}`);console.log('---');
});

注意事项

  1. 安全性:如果处理用户输入,请确保在适当的上下文中使用解码后的内容,避免XSS攻击
  2. 性能:对于大量文本,DOMParser方法通常性能较好
  3. 兼容性:DOMParser在现代浏览器中支持良好,如果需要支持旧浏览器,可以考虑textArea方法

推荐使用第一种或第二种方法,因为它们能够处理大多数HTML实体,包括命名字符引用和数字字符引用。

http://www.dtcms.com/a/575219.html

相关文章:

  • 网站 建设理由网页设计教程详细步骤ppt
  • 深入理解 Python 的“左闭右开”设计哲学
  • 公司网站建设维保协议wordpress文本块表格
  • hanchengkeji杭州网站建设做网站后台维护的岗位叫什么
  • 企业网站建设最新技术diy小程序开发平台
  • 网站建设功能报价单网站建设资格预审公告
  • wordpress添加动漫人物深圳网站优化
  • 日均亿级数据的实时分析:Doris如何接过Spark的接力棒?
  • 网站建设微信官网开发外贸网站做的作用是什么
  • 东莞网络公司哪个网站好wordpress博客怎么搜索
  • 怎么给网站创建二维码国内知名企业网站
  • 网站建设的公司邢台市信都区
  • 功能型网站开发者模式有什么危害
  • 手机网站开发 1433端口错误sem优化系统
  • 关键词解释:Focal Loss解决类别极度不平衡问题而设计的损失函数
  • Kubernetes-入门概念
  • 竞拍网站建设电子商务网站建设概括
  • 用卫生纸做的礼物街网站模板网站自助建站
  • 电影模板哪个网站好2345浏览器导航页
  • 扬州市市政建设处网站上海网络维护有哪些公司
  • 农村网站建设调查报告兰州市城乡建设局网站官网
  • 电竞竞猜网站 建设五大建设是指什么
  • 联合建设官方网站做网站用的书
  • 手机主题如何自己制作网站wordpress精简主题
  • wordpress 用iis建站特价服务器
  • 重庆招聘网站哪个好外加工平台
  • 卡片形式的网站网页设计与制作专业介绍
  • 网站开发业务怎么做南京seo圈子
  • 菏泽营销网站建设公司做车展的网站
  • 用户界面设计报告网站开发技术和seo的联系