0

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

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

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

在没有 if 条件的情况下,是否有适当的方法来实现这一点。

请回复我

4

2 回答 2

1

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

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

关键字枚举.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;
}
于 2013-06-23T08:39:35.377 回答
0

您可以使用HashMap<String,String>, 键作为 key_words,值作为 specific_message。

于 2013-06-23T07:24:18.463 回答