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

时间:2013-06-23 07:18:22

标签: java java-ee

我需要阅读一个流。此流正在转换为带有缓冲读取器的String。在阅读这个流时,对于一些特定的关键词,我需要给出一个特定的消息。 例如:如果我在阅读流时发现“网络错误”,我需要提供“连接时出错”。

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

我认为我们无法管理属性文件,因为我们必须使用密钥进行引用。不是像“网络错误”这样的词。

如果没有条件,是否有正确的方法来实现它。

请回复我

2 个答案:

答案 0 :(得分:1)

嘿,你不需要任何属性文件。您只能使用Enumeration, HashMap处理此问题。 您可以做的是,首先在值中创建所有关键字和特定消息的enum。使用枚举和要替换的值创建地图。迭代关键字并替换它们,如果它们包含在流中。

以下是可以帮助您的示例代码。

<强> 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;
}

答案 1 :(得分:0)

您可以使用HashMap<String,String>,密钥为key_words,值为specific_message。