1. 程式人生 > 其它 >js 字元實體互相轉換

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 }