2014-09-06 131 views
0

我想用ASCII-%替换所有特殊字符。 喜欢这个列表:如何使用javascript替换所有特殊字符

? -> %3F 
! -> %21 
... 

到现在我已经取代2个特殊字符。但我不知道一个简单的方法来替换所有特殊字符。

这是我的代码:

var replacer1 = new RegExp("\\?", "g"); 
var replacer2 = new RegExp("/", "g"); 
var q = ((query).replace(replacer1, "%3F")).replace(replacer2, "%2F"); 
+0

查看['encodeURI'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI)和['encodeURIComponent'](https:/ /developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) – Volune 2014-09-06 12:26:12

+0

只encodeURIComponent将编码?字符。这两个都不会编码!字符。 – ne1410s 2014-09-06 12:28:08

+0

你可以使用'encodeURI'来编码你的大部分角色;对于其他人,你可以运行一个正则表达式匹配! – Sayed 2014-09-06 12:29:46

回答

1

貌似你试图做的是URL编码的特殊字符只使用功能:

  • encodeURIComponent方法
  • 是encodeURI

取决于您是编码整个网址还是只编码一个组件。例如

encodeURIComponent("as686sa8d6sa8787^%^%$^£$%£$%"); 
//Output: "as686sa8d6sa8787%5E%25%5E%25%24%5E%C2%A3%24%25%C2%A3%24%25" 
0

尽管已弃用,escape('myString');方法可以完成这项工作并满足两者的需求吗?和!符号