2017-08-02 33 views
-1

我有數據庫表中包含一些單詞「禁止關鍵字」,我讓用戶通過Android應用程序輸入他對我的服務的意見。檢查對話框是否包含任何被禁止的關鍵字android

如果用戶在評價文本中輸入任何禁止使用的關鍵字,並且不允許他發佈評論,我想顯示一條錯誤消息。

關鍵字存儲在SQLite數據庫中。

如果有任何圖書館可以幫忙請諮詢?基本上我想知道如何做到這一點,而不分裂用戶文本和搜索數據庫中的每個單詞,我需要一個優化的方式來做到這一點。

+0

你在哪裏卡住了? –

+0

如何做到這一點,而不分裂用戶文本和搜索數據庫中的每個單詞,我需要優化的方式來做到這一點 –

+0

你認爲優化什麼 –

回答

0

您可以抓取用戶輸入爲字符串的文本。然後使用輸入文本的String.split(「」)方法創建一個String數組,其中每個元素爲1個字。現在循環訪問字符串數組,並檢查是否有任何單詞與任何禁止的關鍵字匹配。解決你的評論時提到「不分割用戶文本並搜索數據庫中的每個單詞」,那麼這是一個可行的選擇。

另一種選擇是將禁用的關鍵字從數據庫讀取到字符串數組中。循環訪問數組,並使用indexOf(String)方法查看輸入的字符串是否包含任何禁用的關鍵字。如果indexOf返回-1,則表示未找到該字符串(未找到禁止的關鍵字)。你可以做這樣的事情:

for (String str : prohibitedStrList) { 
    // inputtedStr is from the dialog box that user entered 
    if (inputtedStr.indexOf(String str) != -1) { 
     // throw your error message 
    } 
} 
0

這裏是一個解決方案如何實現你想要什麼:

從數據庫中檢索您望而卻步的話,當用戶開始編輯,這樣可以節省你賺更多的時間而不是一次調用數據庫。

將單詞存儲在HashSet中。如果你不知道一個HashSet作爲一個HashMap,但是沒有這個值,只能用鍵,這意味着沒有重複的條目。

添加TextWatcher到您的EditText,並在afterTextChanged,一旦你得到一個空白,這意味着用戶敲擊空格鍵,讓您可編輯的長度,向後找到下一個空的空間(由換句話說,獲得最後介紹的詞)。這可以防止您從一開始就循環使用字符串,您只能爲最後一個字符執行此操作。

一旦你做到了這一點,你必須引進只是做這個簡單的驗證的最後一個字:

if(!myHashSet.add(myStringWord)) //This means the word is present inside your prohibitive words HashSet 
    showErrorMessageForProhibitiveWord(); 
相關問題