gpt4 book ai didi

Javascript - 如何知道有多少字符串与另一个字符串匹配?

转载 作者:行者123 更新时间:2023-11-29 20:51:21 24 4
gpt4 key购买 nike

我一直在实现一个简单的英语测验。在那里,我们需要验证用户在输入字段中输入的答案。在当前的实现中,我正在将正确答案与用户的答案进行精确比较。喜欢,

HTML

<input type="text" id="answer" />
<button onclick="validate()">Validate</button>

Javascript

var question = "Do you like movies?",
answer = "No, I don't like movies.";

function validate() {
var userInput = document.getElementById('answer').value;
if(answer == userInput) {
console.log("correct");
} else {
console.log("wrong");
}
}

但我不想完全验证。例如,忽略区分大小写、逗号、撇号等。例如,如果用户输入,

i dont like movies

答案可能是正确的。我不知道如何开始以及从哪里开始。任何人都请帮助。

最佳答案

一个选择是去除所有非单词字符和空格,并比较每个替换字符串的小写版本:

var question = "Do you like movies?",
answer = "No, I don't like movies.";

const normalize = str => str
.replace(/[^\w ]/g, '')
.toLowerCase();
function validate(userInput) {
const noramlizedInput = normalize(userInput)
const noramlizedAnswer = normalize(answer);
if (noramlizedInput == noramlizedAnswer) {
console.log("correct");
} else {
console.log("wrong");
}
}
validate('No i dont like movies');
validate("NO!!!!! I DON''t like movies.");

另一种选择是遍历 userInput 的所有可能子字符串,并找出与所需的 answer 重叠最多的子字符串,但这要复杂得多.

一个更简单的选择是检查有多少重叠的:

var question = "Do you like movies?",
answer = "No, I don't like movies.";

const normalize = str => str
.replace(/[^\w ]/g, '')
.toLowerCase()
.split(/\s+/)
function validate(userInput) {
const noramlizedInputArr = normalize(userInput);
const noramlizedAnswerArr = normalize(answer);
const overlapCount = noramlizedInputArr.reduce((a, word) => (
a + Number(noramlizedAnswerArr.includes(word))
), 0);
console.log(overlapCount);
if (overlapCount >= 4) {
console.log("correct");
} else {
console.log("wrong");
}
}
validate('No i dont like movies');
validate("NO!!!!! I DON''t like movies.");
validate("i dont like movies.");
validate("Yes I like movies.");

关于Javascript - 如何知道有多少字符串与另一个字符串匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51702316/

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