Java-Chat-App::分析用户输入

标签 java string vaadin

我目前正在使用 Java 中的 Vaadin 框架编写 Textchat。

现在我的问题:我想避免用户发送垃圾邮件或发布无用的文本,因此我有一些标准来过滤我的用户输入(以字符串形式给出) - 我怎样才能实现这一点?

1)检查是否有比定义的 WORD_CAP 长的单个单词 2)检查整体INPUT_CAP 3)无输入时检查 4)检查某些单词(swaerwords,也许是特定单词,这样我就可以为某些单词生成另一个可视化)

目标: 我如何才能在服务器(Wildfly 8)的时间和工作方面最有效地完成此任务以及我应该考虑什么。有人有这方面的经验吗?

这里还有我的 ClickListener 中的代码,用户单击该代码即可发送消息/输入

String input = chatInputBox.getValue();

                if (input.length() <= MAX_CHAT_ZEICHEN_INPUT) {
                    if (!(input.length() == 0)) { 
                        if(analyseTooLongWords(input)) {

//More Code here
                }
            }
}

方法分析单词:

   private boolean analyseTooLongWords(String input) {

    String[] rows = input.split("\\n");
    for(int i = 0; i < rows.length; i++) {
        String[] words = rows[i].split(" ");

        for (int j = 0; j < words.length; j++) {
            if (words[j].length() > MAX_WORD_LENGTH) {
                return false;
            }
        }
    }
    return true;
}

感谢您提前的所有答复 问候 DJ

最佳答案

我很难相信这真的值得优化;但是,我提供的建议是基于您已经进行了尽职调查并确定此代码代表您系统中的真正瓶颈,因此值得进行微优化。

如果您只想检查单词的长度(其中“单词”定义为由空格或换行符分隔的连续字符 block ),您可以简单地迭代字符:

int i = 0;
while (i < input.length()) {
  while (i < input.length() && (input.charAt(i) == ' ' || input.charAt(i) == '\n')) {
    ++i;
  }
  int start = i;
  while (i < input.length() && (input.charAt(i) != ' ' && input.charAt(i) != '\n')) {
    ++i;
  }
  int wordLength = i - start;
  if (wordLength > MAX_WORD_LENGTH) {
    return false;
  }
}
return true;

这是 O(n),因为 i 对输入中的字符进行了一次遍历;不会创建不必要的对象。

关于Java-Chat-App::分析用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34792350/

相关文章:

java - 您应该使用 equals 方法还是比较 Esper 中 EventType 的事件类型 ID?

java - 为什么Java编译器允许通过空对象访问静态变量?

c++ - 由另一个字符串的第一个字符组成的字符串 - 为什么它还打印完整的原始字符串?

c++ - 在 Const char string[] 上使用字符串函数

java - 我们可以仅使用 Vaadin 创建一个完全端到端的 Web 应用程序吗

java - 使用递归计算 Matrix Java 中连接字符串的数量

split函数调用中的Java正则表达式表达式问题

javascript - 如何在 vaadin 页面中集成 google-maps?

java - 瓦丁表 : no components in table

java - IntelliJ : Put some dependencies on the module path in non-modular application