2017-09-09 44 views
1

所以我创建一个光学文本阅读器使用谷歌相机api的OCR。当从相机继续播放时,我想通过将读取的字符串匹配到字符串列表来过滤读取的字符串,并且如果读取的字符串部分匹配,则会添加并显示列表中的项目。爪哇发现部分匹配字符串从列表

除了筛选工作以外的一切。

说我有包含字符串列表:

"BigSizeScrew 45**" 

我要匹配的字符串读:

"BigSizeScrew" 

...在一个与数字,然后添加包含字符串数量也是如此。

数字和星星是由于另一个原因,但必须保持,原因是不相关的问题。

TL;博士:

我如何匹配部分匹配的字符串从列表中现有的字符串?

我有以下,但它专门搜索100%匹配的字符串,而不是如果检查的字符串包含读取字符串的子字符串。

for(int i =0;i<items.size();++i){ 
    if (list.contains(items.valueAt(i))) { 
     TextBlock item = items.valueAt(i); 
     stringBuilder.append(item.getValue()); 
     stringBuilder.append("\n"); 
    } 
} 

编辑:

列表中包含大约200个不同的字符串应该是可匹配部分。但都是以同样的方式;部分匹配主要字符串,但不包含数字/星号。

+0

在java中使用正则表达式。 java的。util.regex – bigbounty

+0

我编辑我的问题,我仍然可以使用正则表达式? – DannyBoy

+0

使用indexOf()方法。方法索引给匹配字符串的索引。所以它的值大于-1,这意味着seach字符串存在于列表中,您可以使用该字符串。 – Charu

回答

1

您可以使用StringstartsWith方法。如果ocrString的值为BigSizeScrew 45**,则执行for循环到要匹配的字符串的列表和if(ocrString.startsWith(list.get(i)) then ...

1

您可以通过添加一个if条件做这样的事情:

for(int i =0;i<items.size();++i){ 
    if (list.contains(items.valueAt(i))) { 
     TextBlock item = items.valueAt(i); 
     if(item.getValue().indexOf("Your String") > -1){ 
      stringBuilder.append(item.getValue()); 
      stringBuilder.append("\n"); 
     } 

    } 
} 

在地方your string使用你想要搜索的字符串值。

+0

为什么downvote? –

1

使用indexOf()方法。方法索引给匹配字符串的索引。所以它的值大于-1,这意味着seach字符串存在于列表中,您可以使用该字符串。