所以,在人们建议我应该使用它而不是尝试大量使用 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”之类的东西尝试了不同的正则表达式。我还有其他代码,但我暂时禁用了该代码(使用 /* */)以检查该代码是否搞砸了,但它仍然无法正常工作。我真的不知道这是怎么回事。