java - 在java中解析字符串

标签 java string parsing

我从服务器获取以下字符串,仅用空格分隔。 (换行只是为了可读性,“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/

相关文章:

java - 如何在java邮件中给出内联样式css?或如何在java邮件中包含CSS?

java - 在本地 Eclipse IDE 上从 Linux 运行 Java 源代码

mysql - Talend MySql String To MySql Date 用于存储和差异计算

algorithm - 是否有一种算法可以确定给定的句子是否是语法的子句?

java - 有谁知道如何提取我的日期字符串并更改格式?

java - 如何确定哪个 Xlint 选项对应于编译器警告?

c++ - 匿名聚合中不允许构造函数,结构中的字符串

java - 在java中将SUBSTRING转换为整数的最佳方法

c - 为字符串数组分配内存

Java SWT 日期时间 : Determine day of Week