js 字符實體互相轉換


字符串 => 字符實體

    function stringToEntity(str,radix){
      let arr=[]
      //返回的字符實體默認10進制,也可以選擇16進制
      radix=radix||0
      for(let i=0;i<str.length;i++){                               
        arr.push((!radix?'&#'+str.charCodeAt(i):'&#x'+str.charCodeAt(i).toString(16))+';')
      }
      let tmp=arr.join('')
      return tmp
    }

字符實體 => 字符串

    function entityToString(entity){
      let entities=entity.split(';')
      entities.pop()
      let tmp=''
      for(let i=0;i<entities.length;i++){
        let num=entities[i].trim().slice(2)
        if(num[0]==='x')//10進制還是16進制
          num=parseInt(num.slice(1),16);
        else num=parseInt(num);
        tmp+=String.fromCharCode(num)
      }
      return tmp
    }

ES6寫法

function stringToEntity(str,radix){
  let arr=str.split('')
  radix=radix||0
  let tmp=arr.map(item=>
`&#${(radix?'x'+item.charCodeAt(0).toString(16):item.charCodeAt(0))};`).join('')
  console.log(`'${str}' 轉實體為 '${tmp}'`)
  return tmp
}
function entityToString(entity){
  let entities=entity.split(';')
  entities.pop()
  let tmp=entities.map(item=>String.fromCharCode(
  item[2]==='x'?parseInt(item.slice(3),16):parseInt(item.slice(2)))).join('')
  console.log(`'${entity}' 轉字符串為 '${tmp}'`)
  return tmp
}

 字符轉HTML實體編碼

<html>
<head>
<title>字符轉HTML實體編碼</title>
<script>
    //HTML實體對照表: http://tool.xker.com/htmlchar.php
function $(id) {return document.getElementById(id);}
function htmlEncode(input)
{
var code = input.charCodeAt(); // 獲得實體編碼
var div = $("divCode");
/*
* 實體編碼的格式是:&#數字;
* & 是 &
* # 是 #
* code 用戶輸入的字的實體編碼
* ; 是 ;
*
* 如果直接寫成 "&#" + code + ";"; 的形式會被瀏覽器直接解析為對應的字符,從而失去了編碼的作用。
*/
div.innerHTML = "&" + "#" + code + ";"; //String.fromCharCode(code); 解碼/
}
</script>
</head>
<body>
<input type="text" onchange="htmlEncode(this.value)"/>
<div id="divCode"></div>
</body>
</html>

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM