场景:生成带参数的外部链接时,需要将参数做成加密串,前端展示链接需要将加密串解析出来,获取参数,解密方法Decrypt会遇到一个坑,加密串作为一个链接url时如果有加号+会被替换成空格,导致解析失败
链接:
解决方法1(有坑不推荐):使用replace()用加号+替换空格还原加密串
let qstr = this.$route.query.code.replace(/\s+/g,'+');
let id = Decrypt(qstr);
此方法的坑:如果加密串有两个或以上连续的空格,只能替换回来一个加号,如下
接收到的加密串:
替换后的加密串(发现只有一个加号)
解决方法2:老老实实写循环找到空格就去替换吧
let codestr = this.$route.query.code;
let qstr = '';
for(let i=0;i<codestr.length;i++){
if(codestr[i]==" "){
qstr += '+';
}else{
qstr += codestr[i];
}
}
let id = Decrypt(qstr);
总结:其实这个解密的坑实际是js的replace方法的坑,替换方法应该还有更好的写法,欢迎大佬留言指教