2

如何用unicode替换字符串中的字符'+'?

E.G.
  Before replace -> "table+end"
  After replace -> "table002Bend"

我尝试使用

  tableName.replace(/+/g,"002B);

但运行 JS 的浏览器抛出错误说明:

不合法的识别符

4

3 回答 3

3

+如果您在正则表达式中使用它,您需要 escape 。试试这种方式:

tableName.replace(/\+/g,"002B")

未转义的加号是匹配一个或多个量词。

请注意,您甚至不需要正则表达式来进行这个简单的替换。

于 2012-10-26T12:46:59.453 回答
2

两件事:该+字符在正则表达式中具有特殊含义,如果您查看您得到的错误:

SyntaxError:无效的正则表达式:/+/:无需重复

你看这+实际上意味着:重复表达式的前一个“部分”。您可以使用反斜杠来指定要替换文字+char ( /\+/)或者您可以创建一个字符类,其中您不需要转义所有特殊字符:/[+]/

之后,由于缺少字符串分隔符,您可能仍然会显示错误:

tableName.replace(/+/g,"002B);//<--missing closing "

总而言之,其中任何一个都可以解决问题:

tableName.replace(/\+/g,"002B");
tableName.replace(/[+]/g,"002B");

但是,如果您想对字符串进行“url-encode”,为什么不简单地使用encodeURI(tableName)

于 2012-10-26T12:51:08.703 回答
1

使用正则表达式,+在正则表达式中有特殊含义,需要转义:

tableName = tableName.replace(/\+/g, '002B');

如果您只是替换单个+,则不需要正则表达式:

tableName = tableName.replace('+', '002B');

但是,需要注意的是它只会替换第一个+遇到的。进行“快速”全部替换的解决方法是结合split()join()

tableName = tableName.split('+').join('002B');
于 2012-10-26T12:48:43.133 回答