javascript - 在顺序很重要的 javascript 中,是否有更 Eloquent 方法来编写字符串和符号替换?

标签 javascript regex ecmascript-6 replace symbols

我有几组字符串正在使用,除了一些符号外,我还删除了所有符号。一旦返回 promise ,我就必须用 %20 替换 (spaces)。我现在有一个解决方案(减去一个更容易理解的问题的 promise )

let ABC = "asvue ? ?. @@";

console.log(ABC
.replace(/[?]/g,'\?')
.replace(/[.]/g,'\.')
.replace(/[@]/g,'\@')
.replace(/[^a-zA-Z @.?]/g,'_')
.replace(/ /g,'%20'));

这给出了正确的结果 "asvue%20?%20?.%20@@" 但是否有更好或更 Eloquent 方法来解决这个问题?我也知道正则表达式不是必需的,但这只是我的一个老习惯。

最佳答案

正如@Bergi 所说,您应该使用 encodeURIComponent ,即“用代表字符的 UTF-8 编码的一个、两个、三个或四个转义序列替换某些字符的每个实例”。

let ABC = "asvue ? ?. @@";
console.log(encodeURIComponent(ABC));  // 'asvue%20%3F%20%3F.%20%40%40'

关于javascript - 在顺序很重要的 javascript 中,是否有更 Eloquent 方法来编写字符串和符号替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57780342/

相关文章:

javascript - 在 InDesign 中选择线程中的所有文本?

javascript - JavaScript 中的除法

reactjs - ES6中如何从构造函数获取状态值?

javascript - Redux 操作必须是普通对象

javascript - 将 Canvas 绘制到另一个 Canvas 上不起作用

javascript - 刷新前脚本在 Chrome 控制台中不可见,与 Firefox 配合良好

c++ - 无法使用 boost::regex

php - 正则表达式模式来获取标签之间的文本

电子邮件列表的正则表达式,验证无效的电子邮件地址

javascript - 如何在 react 输入元素中保持光标位置