如何在encodeURIComponent(“+”)中保持+符号不变
How do I keep + sign as is in encodeURIComponent("+")?
本文关键字:符号 encodeURIComponent 更新时间:2023-09-26
在代码的一部分中,我无法更改。函数encodeURIComponent()
将在我传入的URL上执行,我的任何一个API调用都包含一个+号,这是作为+号发送所必需的。现在它将替换使API失败的"%2B"。。
我尝试过使用转义和"%2B",并在+符号前面使用反斜杠作为"+",但到目前为止没有任何结果。。
如何使encodeURIComponent('+')返回+而不是"%2B"
感谢您的帮助
暂时将加号换成任意标记,例如
encodeURIComponent("one £ + £ two".replace(/'+/g, '*PLUS*')).replace('*PLUS*', '+');
给你:
"one%20%C2%A3%20+%20%C2%A3%20two"
即保留+,该+也将通过decodeURIComponent()
在反向跳闸中幸存。
如果不更改代码,就无法做到这一点。encodeURIComponent
永远不会输出+
符号。
如果你或其他人可以更改代码,你可以使用这个答案:
encodeURIComponent(search).replace(/%20/g, "+");
然后在输入中使用您希望+
所在的空格。
通常不建议覆盖本机函数,但您可以这样做,这将重新定义encodeURIComponent,使其不转义加号,而是转义同一组字符。
function encodeURIComponent(s) {
// encodeURI leaves these chars untouched @#$&=:/,;?+
return encodeURI(s).replace(/[@#$&=:'/,;?]/g, function(c) {
return '%'+c.charCodeAt(0).toString(16)
})
}
由于无法更改encodeURIComponent
的行为,最简单的方法是将%2B
-s替换回+
-es:
encodeURIComponent('1+2=3').replace(/%2B/g, '+') //1+2%3D3
这更有效,因为它需要一次更换,而不需要中间的";"逃逸";,更简单,因为您不必重新实现encodeURIComponent
,并且对于大型字符串,使用原生的可能会更快。
相关文章:
- 在.csv文件中写入学位符号
- 使用相同的数据集绘制各种符号
- 将带点符号的属性(有时)传递给函数
- RegEx JavaScript:数字后的符号提取
- 如何在计算器符号为零时替换它
- 删除输入中输入的符号
- 如何在ReactJs中渲染重音符号
- 如何替换JavaScript字符串中除字母和数字之外的所有内容(空格/符号)
- 插入符号到底是什么
- 删除图形和数字之间的连字符(-)符号
- 浏览器intl.NumberFormat未正确显示货币符号
- JS toLocaleString始终显示货币符号,而不考虑区域设置
- 将插入符号位置移动到ContentEditable<DIV>
- 为更改的输入返回插入符号位置的逻辑
- 包含转义符号的正则表达式
- Javascript中的符号
- 在slitify中制作二级项目符号的动画
- javascript美元符号变量不起作用
- 设置单击项目符号导航后不起作用的间隔
- 我不知道此代码中的这些符号是什么意思.十进制到二进制