使用 querySelectAll,不知道如何在句点和引号后插入空格

问题描述 投票:0回答:0

所以,在人们建议我应该使用它而不是尝试大量使用 replace() 方法之后,我最近开始研究使用 dom 解析来编辑 html 代码。到目前为止一切都很好,但是,今天我偶然发现了一个我无法弄清楚的问题。我的目标是在缺少句号或引号后插入一个空格。例如,我想制作这个“这是一个测试。真的!”进入这个“这是一个测试。真的!”或者这个“这是一个'blah'测试”到这个“这是一个'blah'测试”。我尝试了不同的方法,但似乎无法正常工作。我询问了 ChatGPT,它说我的代码应该可以工作,但事实并非如此。所以也许你可以帮助我。

现在,在摆弄了很长时间之后,我有这个:

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]”和“?!\s”之类的东西尝试了不同的正则表达式。我还有其他代码,但我暂时禁用了该代码(使用 /* */)以检查该代码是否搞砸了,但它仍然无法正常工作。我真的不知道这是怎么回事。

html jquery parsing html-parsing
© www.soinside.com 2019 - 2024. All rights reserved.