所以我发现替换功能,它找到所有单字母“单词”(介词和连词等)并用 a 替换它们后面的空格
以防止将这些字符留在行尾,应该类似于
myString.replace(/\s\w(?=\s)/,"$1 ")
现在如何将其应用于网页上的所有文本?我正在寻找一些通用的解决方案,一个简单的功能,我<head>
不需要更改网页中的任何其他内容。
非常感谢。
所以我发现替换功能,它找到所有单字母“单词”(介词和连词等)并用 a 替换它们后面的空格
以防止将这些字符留在行尾,应该类似于
myString.replace(/\s\w(?=\s)/,"$1 ")
现在如何将其应用于网页上的所有文本?我正在寻找一些通用的解决方案,一个简单的功能,我<head>
不需要更改网页中的任何其他内容。
非常感谢。
你可以尝试这样的事情:
$('body').contents().filter(function(){
return this.nodeType == 3;
}).each(function(){
this.nodeValue = this.nodeValue.replace(/\s\w(?=\s)/,"$1 ");
});
基本上我们抓取 body 元素并获取其内容 - 该contents()
方法将抓取文本节点以及我们想要的元素。然后我们过滤 nodeType 将集合减少到只有文本节点。然后我们进行正则表达式替换。
var str = 'When you want to change the DispFormUrl'.replace(/ /g, ' ');
alert(str);
结果:“当您想要更改 DispFormUrl 时”
function replaceText(node)
{
var current = node.nodeValue;
var replaced = current.replace(searchpattern, replacepattern);
node.nodeValue = replaced;
}
function traverse(node)
{
var children = node.childNodes;
var childLen = children.length;
for(var i = 0; i < childLen; i++)
{
var child = children.item(i);
if(child.nodeType == 3)//or if(child instanceof Text)
replaceText(child);
else
traverse(child);
}
}
function replaceAll()
{
traverse(document.body);
}
replaceAll()
来自身体的呼唤onload
。
<body onload="replaceAll()">