字符串中有'\'的特殊字符前面加转义符
我们常常会遇到这样的问题,在输入框中输入包含特殊字符 \ 的文本去搜索的时候,我们输入的是什么样的传给后台的文本就是什么样的,比如:输入 “我的\” 或者 “我的\我的\\我” 的时候传给后端的代码就是这样的,那么接口就会报错,下面就是对这个问题的解决办法:
escAddFun(value){
// 先对拿到的字符进行分割(分割完之后是一个数组)
let valueSplit = value.split("")
// 创建一个自定义的数组用于存放特殊字符的坐标
let valueSplitIndex = []
// 遍历分割完的字符数组,把特殊字符的坐标存放在自定义的数组中
for (var i = 0; i < valueSplit.length; i++) {
if (valueSplit[i] == "\\") {
valueSplitIndex.push(i)
}
}
// 遍历坐标数组
for (let i = 0; i < valueSplitIndex.length; i++) {
// 给字符数组的特殊字符坐标位置后边加转义符(这里往后面加而不是往前面加的原因是前面加了转义符之后,后面的那个特殊字符的坐标就变化了)
valueSplit.splice(valueSplitIndex[i] + 1, 0, "\\");
}
// 对字符数组进行拼接获得新字符串(此时就为给\加上转义符的字符串了)
let newValue = valueSplit.join("")
return newValue;
},
把方法直接复制在js中,调用之后的返回值就是处理之后的结果了,问题也就完美的解决了。
调用代码:
const value = “我的\我的\\”
let valueNew = escAddFun(value)
//得到结果为“我的\\我的\\\\”加上了转义符
这样就不会报错啦!!!!
(٩(๑❛ᴗ❛๑)۶前端小菜鸟一只,大家如果有其他更简单的方法,欢迎来交流哦!)