2016-03-03 81 views
0

Heyy所有段落与JS

更换我非常新的JavaScript,但我好奇与网页上的空间或没有更换未知字符,一些搜索我八九不离十发现这段代码。

 

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


最终目标仅用于脚本运行,从页面中删除所有 。

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

+3

'文本= text.replace( '', ' ');'或'文本= text.replace(' \ uFFFD','“);' –

回答

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>

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

更有力的是,您可以使用正则表达式来搜索和替换文本。上面的例子只会替换它找到的第一个字符串实例。正则表达式可以做的比这更多,但对于初学者,他们可以找到并替换全部您正在寻找的模式的示例。学习正则表达式的一个起点是Mozilla Developer Network (MDN) site。该网站描述了正则表达式,如下所示:“正则表达式是用于匹配字符串中字符组合的模式。”不要在引号之间放置文本,而要在正斜线之间放置模式。要搜索全部您的模式的实例,请在模式之后添加“g”(对于“全局”)。查看下面的代码片段进行演示。有更多的更多你可以用正则表达式来做。

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;
<p id="A">"My text is ***&#xFFFD;***&#xFFFD;***&#xFFFD;***</p>

+0

这可能是值得注意的是,在使用vanilla JS string.replace时,可以在正则表达式的末尾放置一个'g',这样'.replace()'函数就可以替代第一次出现的内容。 – Thriggle

+0

谢谢@Thriggle。我最初讨论了正则表达式,然后当我意识到时(基于对该问题的另一个评论),我可以使用unicode作为一个常规字符串。但是,我暂时忘记了那会消除全球搜索和替换。所以,现在我已经讨论过正则表达式了。再次感谢。 –

+0

谢谢你的回复,没有期待那个= P –