用JS替换段落中的�

时间:2016-03-03 00:40:55

标签: javascript jquery

Heyy all

我对javascript很新,但我很想知道用网页上的空格替换未知字符,有些搜索我找到了这段代码。


var text = $('#paragraph').text();
text = text.replace('0xFFFD', ' ');


最终目标只是运行一个脚本,从页面中删除所有。。

非常感谢任何帮助,谢谢堆。

1 个答案:

答案 0 :(得分:2)

这里有一些评论可能会给你一些指导。

如果你感兴趣的段落($('#paragraph'))实际上有那个字符,那么你正朝着正确的方向前进。但是,可能是您的特定页面无法理解的各种字符,只是在钻石中显示问号作为替代。

例如,在下面的第一个代码段中,将三个unicode字符插入表中。第一个和最后一个是基于unicode表的预期字符。但是,中间行只显示问号,因为它不知道如何表示指示的unicode字符。如果代码段在不同的浏览器中表现不同,我还在这里添加了一个屏幕截图,显示它在Firefox v44.0.2中的表示方式。

enter image description here



table {
  border-collapse: collapse;
}
td, th {
  border: solid black 1px;
  padding: 0.4em;
}

<table>
  <tr>
    <th>Unicode</th>
    <th>character represented</th>
  </tr>
  <tr>
    <td>&amp;#x0041;</td>
    <td>&#x0041;</td>
  </tr>
  <tr>
    <td>&amp;#0;</td>
    <td>&#0;</td>
  </tr>
  <tr>
    <td>&amp;#xFFFD;</td>
    <td>&#xFFFD;</td>
  </tr>
</table>
&#13;
&#13;
&#13;

如果想要实际替换该问号字符,那么您正在错误地编写replace函数。您可以通过使用字符串搜索来替换字符。你编写替换函数的方式实际上会查找确切的字符0xFFFD,这可能不是你想要的。相反,您应该使用正确的unicode表示。在下面的代码演示中,您可以忽略其他用于检索和放回HTML内容的内容(例如querySelector等)。专注于JavaScript代码的第二行,它显示了如何使用正确的unicode表示来查找和替换您的特殊字符。

更强大的是,您可以使用正则表达式来搜索和替换文本。上面的示例仅替换它找到的字符串的第一个实例。正则表达式可以做更多的事情,但对于初学者,他们可以找到并替换您正在寻找的模式的所有示例。学习正则表达式的一个起点是Mozilla Developer Network (MDN) site。该站点描述了正则表达式,如下所示:&#34;正则表达式是用于匹配字符串中字符组合的模式。&#34;不要在引号之间放置要查找的文本,而是将模式放在正斜杠之间。要搜索模式的所有实例,请添加&#34; g&#34; (对于&#34;全局&#34;)在模式之后。有关演示,请参阅下面的代码段。使用正则表达式可以做更多

&#13;
&#13;
var text1 = document.querySelector("#A").innerHTML;
var text2 = text1.replace('\uFFFD', 'X');
var text3 = text1.replace(/\uFFFD/g, 'X');
document.body.appendChild(document.createElement("p")).innerHTML = text2;
document.body.appendChild(document.createElement("p")).innerHTML = text3;
&#13;
<p id="A">"My text is ***&#xFFFD;***&#xFFFD;***&#xFFFD;***</p>
&#13;
&#13;
&#13;