我需要(在JavaScript
中,也许使用RegEx
?或某些React
组件)来比较两个字符串,并以粗体显示“源”字符串中不存在的所有单词/字符
例如:
“ 商业计划”与“ 商业计划”相比,应返回“ 商业计划喜欢 ” < / p> 附有“ 计划和监视”的
“ 商业计划”应返回“ 计划和监视 ” < / p>
当前,我使用此方法有效,但不幸的是,并非在所有情况下都无法找到问题:
compareStrings(a, b) {
let i = 0;
let j = 0;
let result = "";
while (j < b.length)
{
if (a[i] === ' ') {
i++;
} else {
if ((a[i] != b[j]) || (b[j] === ' ') || i == a.length)
result += b[j];
else i++;
// }
}
j++;
}
return result;
}
有人可以帮助我吗?
答案 0 :(得分:1)
从您的示例中,我建议使用以下字符串比较策略:
a
和b
字符串化b
,并在a
中找到它的第一个匹配项a
仍然出现的b
中找到另一个偏移量b
的其余字符如果这是您想要实现的,则可以尝试对算法进行以下改进:
function compareStrings(a, b) {
let i = 0;
let j = 0;
let search = ''; // current search term (substring of b)
while (j < b.length) {
search += b[j]; // add another character of b to search string
if (a.indexOf(search) > -1) { // search is found in b, continue
j++;
} else {
return b.substr(j); // return remaining substring of b which is not part of a
}
}
}
console.info(compareStrings('business plan', 'business plafond')); // fond
console.info(compareStrings('business plan', 'plan and monitoring')); // and monitoring
我已经看到在您的原始代码中,您还希望跳过空格字符;但是,我不太了解这种行为是否会导致错误的输出...如果您想完全忽略空格,请尝试使用a.replace(/\s/g)
(与b
对应)。
答案 1 :(得分:0)