java - 从流中读取关键字的正确方法

标签 java jakarta-ee

我需要读取一个流。该流正在使用缓冲读取器转换为字符串。在阅读这个直播的时候,对于一些特定的关键词,我需要给出一个特定的信息。 例如:如果我在读取流时发现“网络错误”,我需要给出“连接中有错误”。

但我的问题是,如果有 1000 个特定关键字,那么我必须编写 1000 个“if”条件。

我认为我们无法管理属性文件,因为我们必须使用 key 来引用。不是“网络错误”之类的词。

有没有一种正确的方法可以在没有 if 条件的情况下实现这一点。

请回复我

最佳答案

嘿,您不需要任何属性文件。您只需使用Enumeration、HashMap 即可处理此问题。 您可以做的是,首先创建一个包含所有关键字和值中特定消息的枚举。拥有一个包含枚举和要替换的值的映射。迭代关键字并替换它们(如果流中包含这些关键字)。

这里是示例代码,可以帮助您。

KeyWordEnum.java

public enum KeyWordEnum{

NETWORK_ERROR;

public String toString(){
  if(NETWORK_ERROR){
    return "Network Error";
  }
}
}

现在,在 Test.java 类中:

public String getReplacedStream(String stream){
Map<KeyWordEnum, String> keyWordMapWithValue = new HashMap<KeyWordEnum String>();
keyWordMapWithValue.put(KeyWordEnum.NETWORK_ERROR,"There is an error in connection");

// Replace all the keywords from the map.

  for(KeyWordEnum key : keyWordMapWithValue.keySet()){
    if(stream.contains(key.toString())){
       stream.replaceAll(key.toString(), key.getValue());

    }
  }
  return stream;
}

关于java - 从流中读取关键字的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17258528/

相关文章:

Java HTML 剥离

java - 为什么我的服务器 (Go) 无法解密客户端 (Java) 消息?

java - 过滤器还是什么? -- 进入Spring应用程序之前检查文件

java - 如何在没有 IDE 的情况下编译和运行 Intellij IDEA java 项目?

java - Opencv 3.1.0 Android 隐藏相机预览

java - 任务 ':app:compileDevDebugJavaWithJavac' 执行失败

java - Apache Cocoon JAR 配置 - 我想使用 .class 文件!

java - 如何停止向单个电子邮件 ID 发送多封邮件

session - 对于 Web 应用程序来说 "distributable?"意味着什么

java - 多个 GET 方法匹配 : select most specific