1

从服务器,我得到以下形式的字符串:

String x = "fixedWord1:var1 data[[fixedWord2:var2 fixedWord3:var3 data[[fixedWord4]    [fixedWord5=var5 fixedWord6=var6 fixedWord7=var7]]] , [fixedWord2:var2 fixedWord3:var3 data[[fixedWord4][fixedWord5=var5 fixedWord6=var6 fixedWord7=var7]]]] fixedWord8:fixedWord8";

(只有空格分隔成组的 word-var 对)稍后,我想将它们存储在 a Hashmap、 likemyHashMap.put(fixedWord1, var1);等中。

问题:
在第一个"data[......]"-tag里面,其他-tag的个数"data[..........]"是可变的,事先不知道字符串的长度。

我不知道如何在不诉诸 的情况下处理此类字符串String.split(),我们的分配任务提供者(大学)不鼓励这样做。

我在互联网上搜索过,找不到合适的网站来解释这些事情。
如果有经验的人能给我一些网站链接或类似“图表计划”之类的东西,这样我就可以编写一些代码,那将是非常有帮助的。

编辑: 字符串出错(off-topic-begin "please don't lynch" off-topic-end),正确的字符串是(更改为 fixedWord7=var7 ---to---> fixedWord7=[var7]):

String x = "fixedWord1:var1 data[[fixedWord2:var2 fixedWord3:var3 data[[fixedWord4]    [fixedWord5=var5 fixedWord6=var6 fixedWord7=[var7]]]] , [fixedWord2:var2 fixedWord3:var3 data[[fixedWord4][fixedWord5=var5 fixedWord6=var6 fixedWord7=[var7]]]]] fixedWord8:fixedWord8";
4

2 回答 2

1

问题不是很清楚,但可能这样的事情对你有用:

Pattern p = Pattern.compile("\\b(\\w+)[:=]\\[?(\\w+)");
Matcher m = p.matcher( x );
while( m.find() ) {
   System.out.println( "matched: " + m.group(1) + " - " + m.group(2) );
   hashMap.put ( m.group(1), m.group(2) );
}
于 2012-11-26T16:32:57.860 回答
1

我假设您的字符串遵循相同的模式,其中包含“数据”和“[”、“]”。并且变量名称/值不会包含这些字符串

  1. 从原始字符串中删除字符串“data[”、“[”、“]”和“,”

    replaceAll("data[", "")
    replaceAll("[", "")
    etc
    
  2. 用空格分隔字符串:“”通过使用 StringTokenizer 或按字符循环遍历字符串。

  3. 然后你会得到像这样的字符串数组

    fixedWorld1:var1
    fixedWorld2:var2
    ......
    fixedWorld4
    fixedWorld5=var5
    ......
    
  4. 然后再次用“:”或“=”分隔子字符串。并将名称/值放入地图
于 2012-11-26T16:35:28.187 回答