gpt4 book ai didi

Javascript:正则表达式用十六进制代码替换一些字符

转载 作者:行者123 更新时间:2023-11-30 07:27:14 25 4
gpt4 key购买 nike

我一直没能找到一个例子来做一些与我想要的类似的事情,即替换:

% 与 %25

与 %26

/%2F

# %23

"带空格

\带空格

作为引用,我将 GWT 与 String.replaceAll 一起使用,但我询问的是 Javascript,因为它无论如何都会被翻译成这样。我知道(组件)URI 编码,但这不是我想要的,我只需要这些字符。

稍后编辑:我正在寻找一种在一个或两个正则表达式中完成它的方法,现在它是这样完成的:

splits[i].replaceAll("%", "%25").replaceAll("&", "%26").replaceAll("/","%2F").replaceAll("#", "%23").replaceAll("\"", "").replaceAll("\\\\", "");

但这对我来说似乎很丑陋。

最佳答案

(这是针对 JavaScript 的,这是您询问的语言。请注意,它在 Java 中会大不相同。)

在 JavaScript 中,使用 replace 很简单使用正则表达式和 passing in a function :

var str = "testing % & / # \" \\";
var result = str.replace(/[%&\/#"\\]/g, function(m) {
return (m === '"' || m === '\\') ? " " : "%" + m.charCodeAt(0).toString(16);
});

Live example | source

如果您不介意扫描字符串两次而不是一次,它看起来会更简单一点(尽管还不够,我认为值得这样做):

var str = "testing % & / # \" \\";
var result = str.replace(/["\\]/g, " ").replace(/[%&\/#]/g, function(m) {
return "%" + m.charCodeAt(0).toString(16);
});

...因为我们可以分别进行 "\ 替换,并摆脱对匹配项的检查。Live example | source

关于Javascript:正则表达式用十六进制代码替换一些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10295998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com