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