#javascript #jquery #string #match
#javascript #jquery #строка #совпадение
Вопрос:
Здравствуйте, я хотел бы попросить помощи, как я могу это сделать в Jquery
Подсчитайте количество совпадающих слов (по порядку) между двумя строками, чтобы я мог генерировать точность.
// Example
string1 = "The lazy fox jumps over the fence" // (7 words)
string2 = "The lazy dog jumps under a fence yesterday" // (8 words)
Output: 4
Точность (4 правильных слова / 7 слов для проверки) = 57%
Любая идея будет оценена по достоинству
Комментарии:
1. Должны ли слова также находиться в одной и той же позиции, чтобы считаться точными?
2. Привет, Терри, не совсем, но они должны быть в порядке. например, если у нас есть два слова «the» в string2. Первое «the» и второе «the» будут засчитаны как 2 правильных слова.
3.
string3 = "The fence is for a fox who jumps"
. — Сколько совпадений это имеет с string1 и string2?4. @aven, если сравнивать со string1, то у него 3 правильных совпадения (The, fox, jumps)
5. @ARGO но вы сказали, что это должно быть в том же порядке
Ответ №1:
Вы могли split
бы каждую строку разделить на слова и сопоставить одни и те же слова, используя filter
function getWords(str) {
return str.split(" ").filter(Boolean);
}
function getMatchedWords(words1, words2) {
return words1.filter((word) => words2.includes(word));
}
const string1 = "The lazy fox jumps over the fence";
const string2 = "The lazy dog jumps under a fence yesterday";
const words1 = getWords(string1);
const words2 = getWords(string2);
const matchedWords = getMatchedWords(words1, words2);
const ratio = ((100 * matchedWords.length) / words1.length).toPrecision(2);
console.log(ratio);
Ответ №2:
Создайте наборы из строк, содержащих word, position
кортежи, затем пересеките их с помощью логического соединения amp;
. В зависимости от того, следует ли учитывать регистр, применить toUpperCase
операцию раньше. Результирующий набор содержит совпадающие слова из всех строк.
Таким образом, вы можете проверить любое количество строк на предмет того, насколько они совпадают друг с другом.
Я нахожусь на мобильном телефоне, написание кода — это не тот случай, извините.