如何按HTML实体分割文本?以拆分Hello World为例
解决方法
你的代码无效的原因是:当浏览器解析<p>Hello World!</p>后,innerHTML里的 已经被转换成对应的全角空格字符(Unicode 编码 U+2003),而不是字符串&emsp;,所以用/&emsp/作为分隔符自然匹配不到。
下面是两种可行的解决方案:
方案一:精准匹配全角空格拆分
直接获取元素的文本内容,用全角空格的 Unicode 字符作为分隔符:
const pText = document.querySelector('p').textContent; const splitResult = pText.split('\u2003'); console.log(splitResult); // 输出 ["Hello", "World!"] // 若需去掉末尾感叹号,可额外处理 const cleanResult = splitResult.map(item => item.replace(/!$/, '')); console.log(cleanResult); // 输出 ["Hello", "World"]
方案二:匹配任意空白字符(兼容多种空格场景)
如果不确定具体是哪种空格类型,可用正则匹配所有空白字符:
const splitResult = document.querySelector('p').textContent.split(/\s+/); console.log(splitResult); // 输出 ["Hello", "World!"]
内容的提问来源于stack exchange,提问作者hayata_suenaga
相关产品推荐
相关产品推荐

