使用 querySelectAll,无法弄清楚如何在句点和引号后插入空格

Using querySelectAll, can't figure out how to insert a white space after periods and quotation marks

提问人:Vanyar 提问时间:3/21/2023 最后编辑:isherwoodVanyar 更新时间:3/22/2023 访问量:19

问:

因此,我最近开始深入研究使用 dom 解析来编辑 html 代码,因为人们建议我应该使用它而不是尝试大量使用 replace() 方法。到目前为止,一切都很顺利,但是,今天我偶然发现了一个我无法弄清楚的问题。我的目标是在句点或引号后插入一个空格(如果缺少)。例如,我想做这个“这是一个测试。真的!“变成”这是一个测试。真的!“或者这个”这是一个'废话'测试“变成这个”这是一个'废话'测试”。我尝试了不同的东西,但似乎无法让它工作。所以也许你可以帮我。

现在我有这个:

doc.querySelectorAll('*:not(a):not(img)').forEach(element => {
  const space = element.textContent;
  const dspace = space.replace(/(\S)([.,:;!?])(\S|$)|(\w)(["'])(\S|$)/g, "$1$2 $3");
  element.textContent = dspace;
});

我排除了锚点和图像元素,因为在这些元素中不应该有任何空格,因为它们不再起作用。

我尝试了不同的正则表达式,使用类似的东西。我还有其他代码,但我暂时禁用了该代码(使用)以检查该代码是否搞砸了它,但它仍然不起作用。我真的不知道这是怎么回事。"[^\s]" and "?!\s"/* */

JavaScript HTML 解析

评论

0赞 isherwood 3/22/2023
请在上面的演示中添加一些 HTML,以便我们可以看到问题所在。仅供参考,遍历页面中不是图像或锚点的每个元素可能并不明智。那会很慢wwww。看看你是否可以缩小范围。
0赞 Vanyar 3/22/2023
哎呀,我对“querySelect”中的“query”感到困惑,抱歉造成混乱!我不认为我用 AI 弄乱了我的帖子,因为我只提到我尝试使用它来检查我的代码是否应该工作。但我不会再在这里使用这个名字了。我不确定如何才能最好地实现 HTML。整个代码的目的是用户可以将 html 代码输入到文本区域中,然后通过按下按钮来更改某些内容(例如添加空格)。我不知道我应该将 HTML 的哪一部分添加到我的帖子中。另外,我将代码更改为仅查看 p、il 和 div 元素,感谢您的提示^^

答: 暂无答案