Javascript包含特定的大小写
在我的例子中,我必须只保留包含“eat”的标题(或字符串),因此“eating”也可以,问题在于“cheat”包含“eat”,但它通常会返回上下文之外的标题,同时我还应该保留“cheat-fine”一词 如果不是因为“作弊”这个词本身,我可以用一个If:Javascript包含特定的大小写,javascript,string,filter,include,indexof,Javascript,String,Filter,Include,Indexof,在我的例子中,我必须只保留包含“eat”的标题(或字符串),因此“eating”也可以,问题在于“cheat”包含“eat”,但它通常会返回上下文之外的标题,同时我还应该保留“cheat-fine”一词 如果不是因为“作弊”这个词本身,我可以用一个If:.includes(“eat”)| |。includes(“作弊餐”),我就不用它了。但不幸的是,“作弊”之后也没有“吃饭”,所以我如何排除“作弊”或“作弊”作为单词,如果在本例中没有“吃饭”的话 我可以做一个丑陋的if语句链,但我很确定我缺少了
.includes(“eat”)| |。includes(“作弊餐”)
,我就不用它了。但不幸的是,“作弊”之后也没有“吃饭”,所以我如何排除“作弊”或“作弊”作为单词,如果在本例中没有“吃饭”的话
我可以做一个丑陋的if语句链,但我很确定我缺少了一些高级的includes
js方法变体,它们可以更优雅地解决问题
编辑示例:
let vid = [], vidEat = [];
for(let j=0; j < vidData.items.length; j++){
if (vidData.items[j] != undefined){
vid.push(vidData.items[j].snippet.resourceId.videoId)
if (/\beat|\bmeal/i.test(vidData.items[j].snippet.title)){
vidEat.push(vidData.items[j].snippet.resourceId.videoId)
}
}
}
“我今天吃什么”//接受
“我如何欺骗..”//EXCLUDE
“我的饮食习惯是什么”//ACCEPT
“本周最佳作弊餐”//接受
“年度最佳作弊餐”//接受
EDIT2完整迭代(带解决方案):
let vid = [], vidEat = [];
for(let j=0; j < vidData.items.length; j++){
if (vidData.items[j] != undefined){
vid.push(vidData.items[j].snippet.resourceId.videoId)
if (/\beat|\bmeal/i.test(vidData.items[j].snippet.title)){
vidEat.push(vidData.items[j].snippet.resourceId.videoId)
}
}
}
让vid=[],vidEat=[];
对于(设j=0;j
您可以使用正则表达式匹配以eat
开头的单词或以mean
开头的单词:
const probablyRelatedTitles = titles.filter(
title => /\beat|\bmeal/i.test(title)
);
匹配作弊餐的逻辑是什么?
eat
中有一个cheat
,应该排除它,对吗?不应该排除它,因为字符串也有“meat”,但是如果单独发现“cheat”,则应该排除它。我将编辑以添加示例,因此我想建议使用。在这些情况下使用过滤器,而不是包含\b表示以开始,并且|相当于js | |。probablyRelatedTitles返回一个布尔值?听起来好像有一个字符串数组作为输入,因此.filter
将生成一个数组,其中只包含通过测试的字符串。正则表达式是在字符串本身上执行的,它将替换.includes
。如果您只有一个字符串要检查,您可以单独执行/\beat |\bmeal/i.test(title)
。哦,不,我已经在重复标题,所以我只需要检查当前标题中的“eat”和“meat”,如:.items[i].snippet.title。我应该在你建议的正则表达式中使用.includes吗?它在节点中工作吗?因为我在直接使用regex之前遇到了一些问题,比如在node before中使用regex,而您可以执行类似/\beat |\bmeal/I.test(.items[I].snippet.title)
,首先使用.filter
可能是一种更具语义的方法,这取决于更广泛的上下文。是的,正则表达式在NodeI中起作用。我不知道为什么它也给我起了“create”和“reatreat”的标题,这两个词都不是以“eat”开头,而是包含它。我将用完整的迭代进行编辑