gpt4 book ai didi

javascript - 如何让我的正则表达式翻译我给它的字符串而不是它自己的输出?

转载 作者:行者123 更新时间:2023-11-30 21:10:01 25 4
gpt4 key购买 nike

所以我正在尝试使用 Regex 来创建一种语音密码;将单个字符或小组字符翻译成其他预先指定的单个字符或小组字符。

Example Cipher:

ND = ONZ
ED = ANZ
EE = AAZ
AL = ORTH
IC = AMTH
CH = MAS
FF = UUG
LL = R
OO = UUZ
SS = OOG
TH = ASG
A = OTH
B = YTH
C = M
D = N
E = AZ
F = UG
G = ON
H = S
I = ATH
J = EZ
K = ETH
L = R
M = YZ
N = OZ
O = UZ
P = YN
Q = ITH
R = YG
S = OG
T = AG
U = AN
V = YN
W = L
X = IG
Y = UTH
Z = IZ

我一直遇到的问题是正则表达式翻译了它刚刚翻译的字符串,所以 THE 变成了 ANIZAGOGSOOZAZ 而不是 ASGAZ。实现这一目标的过程详述如下 - 大写字母是最终产品的组成部分。

发生了什么:

AN IZ AG OG S O OZ AZ

th = asg
a = oth
o = uz
u = AN
z = IZ
t = AG
h = s
s = OG
S
g = On
n = OZ
e = AZ

我想要发生的事情:

th = ASG
e = AZ

如何防止正则表达式翻译它自己的输出(或者可能在翻译所有内容之前实际打印)?

这里唯一真正的限制是我需要能够轻松地更改输入和输出值,并创建更多或更少的值。我在 Lingojam ( https://lingojam.com/ ) 中使用 Javascript Regex,所以输入实际上是这样的:

/nd/g
/ed/g
/ee/g
/al/g
/ic/g
/ch/g
/ff/g
/ll/g
/oo/g
/ss/g
/th/g
/a/g
/b/g
/c/g
/d/g
/e/g
/f/g
/g/g
/h/g
/i/g
/j/g
/k/g
/l/g
/m/g
/n/g
/o/g
/p/g
/q/g
/r/g
/s/g
/t/g
/u/g
/v/g
/w/g
/x/g
/y/g
/z/g

最佳答案

创建哈希 Map字符串替换字符串。使用 Map 可以保证键的顺序。通过使用 Map#keys 提取键来创建正则表达式, spreading成一个数组,Array#join用 pipe 。使用 String#replace带有回调以对字符串进行编码。

注意:如前所述skirtle in the comments - 正则表达式中键的顺序很重要。/A|AL/不等同于/AL|A/,您不能依赖“贪婪”来确保较长的匹配优先,它必须在交替中出现得更早。

const hashMap = new Map([["ND","ONZ"],["ED","ANZ"],["EE","AAZ"],["AL","ORTH"],["IC","AMTH"],["CH","MAS"],["FF","UUG"],["LL","R"],["OO","UUZ"],["SS","OOG"],["TH","ASG"],["A","OTH"],["B","YTH"],["C","M"],["D","N"],["E","AZ"],["F","UG"],["G","ON"],["H","S"],["I","ATH"],["J","EZ"],["K","ETH"],["L","R"],["M","YZ"],["N","OZ"],["O","UZ"],["P","YN"],["Q","ITH"],["R","YG"],["S","OG"],["T","AG"],["U","AN"],["V","YN"],["W","L"],["X","IG"],["Y","UTH"],["Z","IZ"]]);

const pattern = new RegExp([...hashMap.keys()].join('|'), 'ig');

const result = 'THE'.replace(pattern, (str) => hashMap.get(str));

console.log(result);

关于javascript - 如何让我的正则表达式翻译我给它的字符串而不是它自己的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46248185/

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