编写一个类实现一个接口,将字符串中储存的名值对信息转换成Map对象
解决时间 2021-03-17 07:49
- 提问者网友:孤凫
- 2021-03-16 16:11
import java.util.Map;
实现将一个字符串中包含的名值对转换成Map。
字符串的储存方式如下列:
Name1 = Value1;
Name2 = Value2;
各行之间使用换行符进行分割。
Public interface Str2Map()
{
Map getStatus()
}
详细代码
跪求各位大哥大姐帮忙
谢谢
最佳答案
- 五星知识达人网友:摆渡翁
- 2021-03-16 16:27
其实可以多利用String的split方法。
换行符的话可以认为是\
和\\r,然后把字符串的每一行拿出来,再对每一行split,得到所需要的键和值。
我写了个例子,功能可能不够完善,不过大问题是没有了,供你参考:
public class Str2MapImpl implements Str2Map {
private String status;
public Map getStatus() {
if(status==null)
return null;
Map statusMap = new HashMap();
String delim = "\
|\\r";
String[] rows = status.split(delim);
for(int i=0;i
String row = rows[i];
if(row.equals(""))
continue;
String[] keyAndValue = row.split("=");
if(keyAndValue.length<2)
continue;
String key = keyAndValue[0];
String value = keyAndValue[1];
if(key.equals("")||value.equals(""))
continue;
statusMap.put(key, value);
}
return statusMap;
}
public void setStatusStr(String status_) {
status = status_;
}
public static void main(String args[]){
//测试用例
Str2MapImpl s2m= new Str2MapImpl();
String str = "a=1\
b=2\\rc=3";
s2m.setStatusStr(str);
Map status = s2m.getStatus();
System.out.println(status);
}
}
全部回答
- 1楼网友:山君与见山
- 2021-03-16 17:45
其实可以多利用string的split方法。
换行符的话可以认为是\
和\\r,然后把字符串的每一行拿出来,再对每一行split,得到所需要的键和值。
我写了个例子,功能可能不够完善,不过大问题是没有了,供你参考:
public class str2mapimpl implements str2map {
private string status;
public map<string, string> getstatus() {
if(status==null)
return null;
map<string,string> statusmap = new hashmap<string,string>();
string delim = "\
|\\r";
string[] rows = status.split(delim);
for(int i=0;i<rows.length;i++){
string row = rows[i];
if(row.equals(""))
continue;
string[] keyandvalue = row.split("=");
if(keyandvalue.length<2)
continue;
string key = keyandvalue[0];
string value = keyandvalue[1];
if(key.equals("")||value.equals(""))
continue;
statusmap.put(key, value);
}
return statusmap;
}
public void setstatusstr(string status_) {
status = status_;
}
public static void main(string args[]){
//测试用例
str2mapimpl s2m= new str2mapimpl();
string str = "a=1\
b=2\\rc=3";
s2m.setstatusstr(str);
map<string,string> status = s2m.getstatus();
system.out.println(status);
}
}
我要举报
大家都在看
推荐资讯