【发布时间】:2017-03-25 00:38:56
【问题描述】:
我目前遇到的问题是我从数据库中收到了一个字符串,其中 ascii 与字符串混合在一起。我想知道如何创建一个转换函数来将字符串更改为下面的输出。
var string = 'Mc'Dought';
在网页上输出 Mc'dought 的最终结果。
function convert(str){
//Code Here
}
【问题讨论】:
标签: javascript string ascii
我目前遇到的问题是我从数据库中收到了一个字符串,其中 ascii 与字符串混合在一起。我想知道如何创建一个转换函数来将字符串更改为下面的输出。
var string = 'Mc'Dought';
在网页上输出 Mc'dought 的最终结果。
function convert(str){
//Code Here
}
【问题讨论】:
标签: javascript string ascii
小心你的要求。
您正在查看单引号的转义序列。如果你把它扔到页面上,它就会正常显示。
另一方面,如果您坚持将其转换为实际的单引号字符,则可能会遇到问题。
查看这段代码 sn-p 看看结果:
<INPUT Value="Mc'Dought">
<BR>
<INPUT Value="Mc'Dought">
<BR>
<SPAN>Mc'Dought</SPAN>
<BR>
<SPAN>Mc'Dought</SPAN>
<BR>
<INPUT Value='Mc'Dought'> <!-- Problems!! -->
<BR>
<SPAN>Mc'Dought</SPAN>
但是,如果您了解所有这些并且仍然想取消转义(例如,您需要使用字符串来设置窗口title 或发出alert),我建议您使用公认的 HTML-unescape方法,而不是仅仅替换 '。见this answer。
jquery:
function escapeHtml(unsafe) {
return $('<div />').text(unsafe).html()
}
function unescapeHtml(safe) {
return $('<div />').html(safe).text();
}
纯 Javascript:
function unescapeHtml(safe) {
return safe.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, "'");
}
【讨论】:
将String#replace 与正则表达式和替换函数一起使用。您可以使用正则表达式从每个 HTML 实体中解析字符代码,然后调用 String.fromCharCode 将每个代码转换为其字符形式:
var string = 'Mc'Dought'
function convert (string) {
return string.replace(/&#(?:x([\da-f]+)|(\d+));/ig, function (_, hex, dec) {
return String.fromCharCode(dec || +('0x' + hex))
})
}
console.log(convert(string))
【讨论】: