const map = {
'~':'~',
'[':'#',
']':'$',
'!':'!',
'<':'&',
'|':'*',
'>':'@'
}
const rMap = {}
for(let k in map){
rMap[map[k]]=k
}
//待转换文本
let s = '你好啊'
function transform(text){
const nums = `~~[],~~!![],~~!![]<<~~!![],~~!![]<<~~!![]|~~!![],~~!![]<<~~!![]<<~~!![],~~!![]<<~~!![]<<~~!![]|~~!![],~~!![]<<~~!![]<<~~!![]|~~!![]<<~~!![]
,~~!![]<<~~!![]<<~~!![]|~~!![]<<~~!![]|~~!![],~~!![]<<~~!![]<<~~!![]<<~~!![],~~!![]<<~~!![]<<~~!![]<<~~!![]|~~!![]`.split(',')
let arr = [...text]
let res = arr.map(i=>{
let n = ''+i.charCodeAt(0)
let b = [...n]
return b.map(j=>{
let k = +j
return nums[k]
}).join('!!!')
}).join('>>')
res = [...res].map(i=>map[i]).join('')
return res
}
//转换
let res = transform(s)
console.info(`人话:`)
console.info(s)
console.info(`转换成鸟语:`)
console.info(res)
function revert(text){
text = [...text].map(i=>rMap[i]).join('')
let s = text.split('>>').map(i=>{
return i.split('!!!').join()
}).join('],[')
s = '[['+s+']]'
let code = `let x = ${s};x=x.map(i=>+i.join('')).map(i=>String.fromCharCode(i)).join('');return x`
let f = new Function(code)
return f()
}
//还原
console.info('还原鸟语为人话:')
console.info(revert(res))
效果