1

所以我发现替换功能,它找到所有单字母“单词”(介词和连词等)并用 a 替换它们后面的空格 以防止将这些字符留在行尾,应该类似于

myString.replace(/\s\w(?=\s)/,"$1 ")

现在如何将其应用于网页上的所有文本?我正在寻找一些通用的解决方案,一个简单的功能,我<head>不需要更改网页中的任何其他内容。

非常感谢。

4

3 回答 3

4

你可以尝试这样的事情:

$('body').contents().filter(function(){ 
     return this.nodeType == 3;
}).each(function(){
   this.nodeValue = this.nodeValue.replace(/\s\w(?=\s)/,"$1&nbsp;");
});

基本上我们抓取 body 元素并获取其内容 - 该contents()方法将抓取文本节点以及我们想要的元素。然后我们过滤 nodeType 将集合减少到只有文本节点。然后我们进行正则表达式替换。

于 2010-02-18T07:24:12.963 回答
2
var str = 'When you want to change the DispFormUrl'.replace(/ /g, '&nbsp;');
alert(str);

结果:“当您想要更改 DispFormUrl 时”

于 2012-08-02T12:38:33.627 回答
2
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()">
于 2010-02-18T07:22:38.860 回答