Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 检查对话框是否包含任何禁止的关键字_Android_Android Edittext_Android Sqlite - Fatal编程技术网

Android 检查对话框是否包含任何禁止的关键字

Android 检查对话框是否包含任何禁止的关键字,android,android-edittext,android-sqlite,Android,Android Edittext,Android Sqlite,我有一个数据库表,其中包含一些单词“禁止的关键字”,我让用户通过Android应用程序输入他对我的服务的意见 我想显示一条错误消息,如果用户在评论文本中输入任何禁止的关键字,并且不允许他发布评论 关键字存储在SQLite数据库中 如果有任何图书馆可以提供帮助,请咨询?基本上,我想知道如何在不拆分用户文本和搜索数据库中的每个单词的情况下做到这一点,我需要一种优化的方法来做到这一点。您可以获取用户作为字符串输入的文本。然后对输入的文本使用String.split(“”)方法创建一个字符串数组,其中每

我有一个数据库表,其中包含一些单词“禁止的关键字”,我让用户通过Android应用程序输入他对我的服务的意见

我想显示一条错误消息,如果用户在评论文本中输入任何禁止的关键字,并且不允许他发布评论

关键字存储在SQLite数据库中


如果有任何图书馆可以提供帮助,请咨询?基本上,我想知道如何在不拆分用户文本和搜索数据库中的每个单词的情况下做到这一点,我需要一种优化的方法来做到这一点。

您可以获取用户作为字符串输入的文本。然后对输入的文本使用String.split(“”)方法创建一个字符串数组,其中每个元素是一个单词。现在遍历字符串数组,并检查是否有任何单词与任何禁止的关键字匹配。对你的评论说“不分割用户文本并搜索数据库中的每个单词”,这是一个可行的选择,可以使用

另一个选项是将禁止的关键字从数据库读入字符串数组。在数组上循环并使用
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
    }
}

以下是如何实现您的目标的解决方案:

当用户开始编辑时,从数据库中检索禁止使用的单词,这样可以节省对数据库进行多次调用的时间

将单词存储在哈希集中。如果您不知道HashSet作为HashMap工作,但是没有值,只有键,这意味着没有重复的条目

在EditText中添加一个
TextWatcher
,在
PostTextChanged
中,一旦获得一个空格,即用户点击空格按钮,获取可编辑文本的长度,从后面查找下一个空格(换言之,获取最后引入的单词)。这将防止您从一开始就循环字符串,因为您只对最后一个字符循环

完成此操作并介绍了最后一句话后,只需执行以下简单验证:

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

你在哪里停留?如何在不拆分用户文本和搜索数据库中的每个单词的情况下,我需要优化的方法来完成这一点,你认为优化的是什么?检查也许你应该考虑张贴一些代码。