【发布时间】:2018-06-16 07:01:22
【问题描述】:
所以我在 ionic 项目中使用 Ocrad.js 库来读取图像中的文本。在应用程序中,用户可以将“项目”(如单词)添加到数组中,然后我想检查这些项目(单词)是否存在于图像的文本中。例如:如果图像有一个句子:“我喜欢足球”,并且用户在列表中添加了“足球”这个词,按下按钮,应用程序将检查“我喜欢”中是否存在“足球”足球”,并会这样告诉用户。在其他场合,它也会这么说。
到目前为止,我想出了这种情况:
for(let item of this.itemList) {
if(text.indexOf(item.name)>=0){
alert('word found');
} else {
alert('word not found');
}
}
这个想法是遍历用户添加到数组中的项目(单词)列表,并为它们提供适当的响应。虽然如果我只添加一个单词,就像我上面提到的足球示例一样,但如果我在列表中添加更多单词,循环显然会给我 2 个警报。因此,如果将“足球”一词添加到列表中并因此有一个包含“足球”和“足球”的数组,我会收到 2 个警报,这是有道理的,因为我没有停止循环。所以我尝试了一个开关盒,由于某种原因它不起作用(我真的不知道为什么,但它一直给我两个警报)。这是我的开关的样子:
for(let item of this.itemList){
switch(true){
case (text.indexOf(item.name)>=0): {
alert('word found');
break;
}
case (text.indexOf(item.name) <= 0):{
alert('word not found');
break;
}
default: {
alert('please add a word to the list');
break;
}
}
}
所以在玩耍和研究之后,我真的找不到对我有很好帮助的东西。同样的想法是,如果图像文本说“我喜欢足球”并且我在数组中添加 3 个项目:“足球”、“篮球”、“足球”,那么答案将只是“找到单词”,而如果单词不是在那里,我只会得到一次“找不到单词”!我相信我可能会做一些非常愚蠢的事情,我用我的菜鸟的眼睛看不到哈哈。我希望我的问题是有道理的。谁能帮我这个?伙计们干杯!
编辑 - 这是我实际使用的相机功能:
onAnalyze() {
let matchFound = false;
let loader = this.loadingCtrl.create({
content: 'Please wait...'
});
loader.present();
(<any>window).OCRAD(document.getElementById('image'), text => {
loader.dismissAll();
alert(text);
console.log(text);
for(const item of this.itemList)
{
if(text.indexOf(item) >=0){
matchFound = true;
break;
}
}
if(found){
alert('word found!');
} else{
alert('word not found!');
}
}
);
}
【问题讨论】:
标签: arrays typescript for-loop if-statement ionic-framework