我需要阅读一个流。此流正在转换为带有缓冲读取器的字符串。在阅读这个流时,对于一些具体的关键词,我需要给出一个具体的信息。例如:如果我在读取流时发现“网络错误”,我需要给出“连接出错”。
但我的问题是,如果有 1000 个特定关键词,那么我必须编写 1000 个“如果”条件。
我认为我们无法管理属性文件,因为我们必须使用密钥来引用。不是像“网络错误”这样的词。
在没有 if 条件的情况下,是否有适当的方法来实现这一点。
请回复我
我需要阅读一个流。此流正在转换为带有缓冲读取器的字符串。在阅读这个流时,对于一些具体的关键词,我需要给出一个具体的信息。例如:如果我在读取流时发现“网络错误”,我需要给出“连接出错”。
但我的问题是,如果有 1000 个特定关键词,那么我必须编写 1000 个“如果”条件。
我认为我们无法管理属性文件,因为我们必须使用密钥来引用。不是像“网络错误”这样的词。
在没有 if 条件的情况下,是否有适当的方法来实现这一点。
请回复我
嘿,您不需要任何属性文件。您只能使用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;
}
您可以使用HashMap<String,String>
, 键作为 key_words,值作为 specific_message。