我从服务器获取以下字符串,仅用空格分隔。 (换行只是为了可读性,“XX
是一个占位符,长度可以变化。方括号中的内容的长度也可以变化。
字符串1:
status:ok [XXX][a=XXX b=XXX c=XXX d=XXX e=0 f=XXX g=XXX h=XXX i=XXX j=XXX
k=XXX l=XXX m=XXX n=[[XXX][XXX]] p=[[XXX][XXX][XXX][XXX][XXX][XXX][XXX]]]
end:end
字符串2:
status:ok [XXX][a=XXX b=XXX c=XXX d=XXX d2=XXX e=XXX f=XXX g=XXX h=XXX i=XXX j=XXX
k=XXX l=XXX m=XXX n=[[XXX][XXX]] p=[[XXX][XXX][XXX][XXX][XXX][XXX][XXX]]]
end:end
方括号“[]”中的所有部分都可以包含或多或少的“[]”元素,并且内部“[]”内的单词的长度可以不同。我需要 HashMap 中的 a、b、c、d、e 等,但在我做到这一点之前,我需要以某种方式解析它。
如何在 Java 中有效地解析该字符串?
我搜索并发现了很多网站和线程,其中人们建议除了“正则表达式解析”之外还建议使用“键值解析”,但不幸的是,有关“键值解析”的信息很少。
编辑: 最后我想将这些值存储在 Hashmap 中,如下所示:
HashMap<String,Object> myHashMap = new HashMap();
myHashMap.put(a, XXX);
....
myHashMap.put(p,array-of-all-[XXX]);
最佳答案
你可以简单地这样做,它会打印你的 a,b,c ..
String s ="status:ok [XXX][a=XXX b=XXX c=XXX d=XXX e=0 f=XXX g=XXX h=XXX i=XXX j=XXX k=XXX l=XXX m=XXX n=[[XXX][XXX]] p=[[XXX][XXX][XXX][XXX][XXX][XXX][XXX]]] end:end".replaceAll("end:end", "");
String [] ss = s.split("=");
HashMap<Character,Object> myHashMap = new HashMap();
try{
for(int i=0;i<ss.length;i++){
myHashMap.put(ss[i].charAt(ss[i].length()-1), ss[i+1].substring(0, ss[i+1].length()-1).trim());
}
}catch(Exception e){
// do nothing
}
System.out.println(myHashMap);
}
关于java - 在java中解析字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13543181/