从服务器,我得到以下形式的字符串:
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对组)
之后,我想将它们存储在Hashmap
中,例如myHashMap.put(fixedWord1, var1);
等等。
问题:
在第一个 "data[......]"
-tag内,其他 "data[..........]"
-tags的数量是可变的,我不知道字符串的长度提前。
我不知道如何在不诉诸String.split()
的情况下处理此类字符串,我们的任务授权人(大学)不鼓励这样做。
我在互联网上搜索过,找不到合适的网站来解释这些事情 如果有经验的人可以给我一些链接到网站或类似“图表计划”之类的内容,那将是非常有帮助的。所以我可以编写一些东西。
修改 在字符串中出错( off-topic-begin “请不要” off-topic-end “),正确的字符串是(已更改fixedWord7 = var7 ---到---> 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";
答案 0 :(得分: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) );
}
答案 1 :(得分:1)
我假设你的字符串遵循相同的模式,其中包含“data”和“[”,“]”。变量名称/值将不包含这些字符串
从原始字符串中删除字符串“data [”,“[”,“]”和“,”
replaceAll("data[", "")
replaceAll("[", "")
etc
用空格分隔字符串:“”使用StringTokenizer或通过char循环遍历String char。
然后你会得到像
这样的字符串数组fixedWorld1:var1
fixedWorld2:var2
......
fixedWorld4
fixedWorld5=var5
......