在JavaScript中将字符串中的Unicode转义序列转换为对应字符
解决JavaScript中转义HTML实体的问题
嘿,这个需求其实挺常见的,在JavaScript里有几种简单靠谱的方法可以帮你把&这类HTML转义字符还原成实际字符,我给你分享两个常用方案:
方法一:直接使用replace()正则替换
如果只是处理单个特定的转义字符(比如你这里的&),直接用字符串的replace()方法搭配正则全局匹配就够了:
const originalString = 'trouble&тест'; const decodedString = originalString.replace(/&/g, '&'); console.log(decodedString); // 输出: trouble&тест
这里的/&/g里的g是全局匹配标志,确保字符串里所有的&都会被替换掉,而不是只替换第一个。
方法二:利用DOM进行通用HTML实体解码
如果你以后可能需要处理更多类型的HTML实体(比如<、>、"等),用DOM的临时元素解码会更省心,它能一次性处理所有标准HTML实体:
function decodeHtmlEntities(str) { const tempDiv = document.createElement('div'); // 把带转义的字符串赋值给innerHTML,浏览器会自动解码 tempDiv.innerHTML = str; // 返回解码后的文本内容 return tempDiv.textContent || tempDiv.innerText; } const originalString = 'trouble&тест'; const decodedString = decodeHtmlEntities(originalString); console.log(decodedString); // 输出: trouble&тест
这个方法的好处是通用性强,不用挨个写替换规则,适合处理复杂的带多种转义的字符串。
补充:Node.js环境下的处理
如果是在Node.js环境(没有DOM),可以使用第三方库he(HTML Entities的缩写),安装后调用它的decode()方法即可;当然如果只是简单的单个实体替换,用方法一的正则替换也完全够用。
内容的提问来源于stack exchange,提问作者Shakirov Ramil
相关产品推荐
相关产品推荐

