如何使用'转换字符串转换为标准字符

时间:2017-03-25 00:38:57

标签: javascript string ascii

我目前遇到的问题是,我收到了数据库中的字符串,其中 ascii 与字符串混合在一起。我想知道如何创建一个转换函数来将字符串更改为下面的输出。

var string = 'Mc'Dought'; 

在网页上输出Mc&#39的最终结果。

function convert(str){
//Code Here
}

2 个答案:

答案 0 :(得分:1)

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))

答案 1 :(得分:0)

小心你所要求的。

您正在查看单引号的转义序列。如果你将它扔到页面上,它将正确显示。

另一方面,如果您坚持将其转换为实际的单引号字符,则可能会遇到问题。

查看此代码段以查看后果:

<INPUT Value="Mc&#039;Dought">
<BR>
<INPUT Value="Mc'Dought">
<BR>
<SPAN>Mc&#039;Dought</SPAN>
<BR>
<SPAN>Mc'Dought</SPAN>
<BR>
<INPUT Value='Mc'Dought'>  <!-- Problems!!  -->
<BR>
<SPAN>Mc'Dought</SPAN>

但是,如果你理解了所有这些并且仍然希望对其进行解除(例如,你需要使用字符串来设置窗口title或发出alert),我建议你使用接受HTML-unescape方法,而不是仅替换&amp;#039。请参阅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(/&amp;/g, '&')
        .replace(/&lt;/g, '<')
        .replace(/&gt;/g, '>')
        .replace(/&quot;/g, '"')
        .replace(/&#039;/g, "'");
}