我需要阅读一个流。此流正在转换为带有缓冲读取器的String。在阅读这个流时,对于一些特定的关键词,我需要给出一个特定的消息。 例如:如果我在阅读流时发现“网络错误”,我需要提供“连接时出错”。
但我的问题是,如果有1000个特定的关键词,那么我必须编写1000秒的'if'条件。
我认为我们无法管理属性文件,因为我们必须使用密钥进行引用。不是像“网络错误”这样的词。
如果没有条件,是否有正确的方法来实现它。
请回复我
答案 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。