如:以下字符串,想要的是按照一个一个字段映射关系将其存储到map或list中,通过key(如:field1)能获取到value(aaa)值。
field1=aaa, field2=null, field3=<bbb>, field3=http://test
5 个解决方案
#1
这个不就是分割的事情吗
#2
先按逗号分隔,得到String[] strArr1,然后遍历strArr1按=号分隔,map.put(等号前内容,等号后内容);
#3
String str="field1=aaa, field2=null, field3=<bbb>, field3=http://test";
String[] sArr=str.split(",");
Map<String,List<String>> map=new HashMap<String,List<String>>();
for(String s:sArr){
//针对你这里有重复key的情况不让其覆盖原key的内容而是添加到原key内容上
String[] ss=s.split("=");
String key=ss[0];
String value=ss[1];
List<String> list=map.get(key);
if(list==null){
list=new ArrayList<String>();
}
list.add(value);
map.put(key, list);
}
System.out.println(map);
#4
我大概知道怎么弄,写出来的感觉有点不太好。
public static void main(String[] args) {
String s = "[field1=aaa, field2=null, field3=<bbb>, field3=http://test]";
s = s.replace("[", " ");
s = s.replace("]", " ");
s = s.trim();
String st[]=new String[10];
st = s.split(",");
int num = st.length;
Map<String,String> map=new HashMap<String,String>();
for (int i=0;i<num;i++){
System.out.println(st[i].trim());
String stt[]=new String[1];
stt = st[i].trim().split("=");
map.put(stt[0], stt[1]);
System.out.println(map.get(stt[0]));
}
}
#5
功能实现是关键,好不好是代码优化问题。
#1
这个不就是分割的事情吗
#2
先按逗号分隔,得到String[] strArr1,然后遍历strArr1按=号分隔,map.put(等号前内容,等号后内容);
#3
String str="field1=aaa, field2=null, field3=<bbb>, field3=http://test";
String[] sArr=str.split(",");
Map<String,List<String>> map=new HashMap<String,List<String>>();
for(String s:sArr){
//针对你这里有重复key的情况不让其覆盖原key的内容而是添加到原key内容上
String[] ss=s.split("=");
String key=ss[0];
String value=ss[1];
List<String> list=map.get(key);
if(list==null){
list=new ArrayList<String>();
}
list.add(value);
map.put(key, list);
}
System.out.println(map);
#4
我大概知道怎么弄,写出来的感觉有点不太好。
public static void main(String[] args) {
String s = "[field1=aaa, field2=null, field3=<bbb>, field3=http://test]";
s = s.replace("[", " ");
s = s.replace("]", " ");
s = s.trim();
String st[]=new String[10];
st = s.split(",");
int num = st.length;
Map<String,String> map=new HashMap<String,String>();
for (int i=0;i<num;i++){
System.out.println(st[i].trim());
String stt[]=new String[1];
stt = st[i].trim().split("=");
map.put(stt[0], stt[1]);
System.out.println(map.get(stt[0]));
}
}
#5
功能实现是关键,好不好是代码优化问题。