2017-09-09 52 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字符串存在於列表中,您可以使用該字符串。