如果字符串按特定顺序输入,我将如何替换它?
Posted
技术标签:
【中文标题】如果字符串按特定顺序输入,我将如何替换它?【英文标题】:How Would I replace a string if its input in a certain order? 【发布时间】:2022-01-21 18:06:30 【问题描述】:var xboxConverter =
"1" : "Up",
"2" : "Down",
"3" : "Down Foward",
"4" : "Backward",
"5" : "Standing",
"6" : "Forward",
"7" : "Up Backward",
"8" : "Up",
"9" : "Up Foward",
"236S": "Quarter Circle Special",
",": " ",
"H" : "B",
"M": "Y",
"L": "X",
"S": "A",
"2" : "Down",
"RB" : "RB",
"236" : "Quarter Circle Forward",
"214" : "Quarter Circle Backwards",
"214S" : "Quarter Circle Backwards Special",
;
document.querySelector("textarea").addEventListener("keyup", (e) =>
const input = e.target.value.toUpperCase();
const inputValidated = input.replace(/[^a-zA-Z0-9 ,]/g, "");
const arrOfIns = inputValidated.split(" ");
const arrOfOuts = arrOfIns.map((e) =>
xboxConverter[e] ? xboxConverter[e] : ""
);
if (parseInt.innerText == 236 & 214)
return
const out = arrOfOuts.join(" , ");
document.getElementById("output").innerText = out;
);
为了更好地描述我的意思,如果有人一起输入 236,它应该说“Quarter Circle Forward”,或者如果他们输入 236RT,它应该说“Quarter Circle Forward Right Trigger”。
【问题讨论】:
你需要将字符串从最长的键解析为最短的开始,而且out
只是一个字符串,所以out.input
没有任何意义。
我正在努力学习 javascript
没关系,但我必须输入每个字符串“214S”:“Quarter Circle Backwards Special”,有没有让这更容易,他们只需输入 214A 并显示“Quarter Circle Backwards Special”或例如未在 214H 中编码的东西,它会显示“Quarter Circle Backwards Heavy”但不需要像这样对每个字符串进行编码?
输入“236”如何输出“Quarter Circle Forward”?我虽然是“四分之一圈”。
那么 214 会是什么? 214 表示向后四分之一圆。
【参考方案1】:
从您的 cmets 中,我可以理解您正在寻找与用户输入的键匹配的值。您可以简单地检查它而无需任何拆分和 for 循环,例如:
var xboxConverter =
"1": "Up",
"2": "Down",
"3": "Down Foward",
"4": "Backward",
"5": "Standing",
"6": "Forward",
"7": "Up Backward",
"8": "Up",
"9": "Up Foward",
"236S": "Quarter Circle Special",
",": " ",
"H": "B",
"M": "Y",
"L": "X",
"S": "A",
"2": "Down",
"RB": "RB",
"236": "Quarter Circle Forward",
"214": "Quarter Circle Backwards",
"214S": "Quarter Circle Backwards Special",
;
document.querySelector("textarea").addEventListener("keyup", (e) =>
const input = e.target.value.toUpperCase();
const inputValidated = input.replace(/[^a-zA-Z0-9 ,]/g, "");
document.getElementById("output").innerText = xboxConverter[inputValidated] ? xboxConverter[inputValidated] : "No data";
);
<textarea></textarea>
<div id="output"></div>
这就是你要找的吗?
【讨论】:
不,不完全是。我需要我显示“Quarter Circle Forward,即使他们输入 2、3、6,而不是 236以上是关于如果字符串按特定顺序输入,我将如何替换它?的主要内容,如果未能解决你的问题,请参考以下文章