我有一个字符串有两种类型的分隔符。
String X = "20001=EDTS~^20002=USA~^20003=1170871875~^20004=1~^20005=0~^773=~^665=~^453=2~^448=0A~!447=D~!452=1~!~^448=0A~!447=D~!452=17~!~^11=001111652533408~^";
~^
表示单独的值
其中 ~!
表示值组。
448=0A~!447=D~!452=1~!~^448=0A~!447=D~!452=17~!~^
之前我假设没有重复的数据组,只是根据键等于标签号映射到 map 。然而,这不适用于重复组,因为它们会被覆盖。
编辑 我想从此字符串中获取值并将它们映射到不同的对象属性。基本上左边的数字是指一个标签,而值就是值。所以标记 20002=USA,我需要将值 USA 映射到我的新对象中的一个属性。无效值只是默认值,因此标记它们已被分配但未获得值
现在我正在绞尽脑汁想出一种更好的方法来映射数据和组。维护标签和与之关联的值。
最佳答案
呃……错误的数据格式。 JSON 会更漂亮。 URL 编码的参数字符串也会更好。如果发生这种情况,两者都将允许任意嵌套组。
但也许是这样的?
String groupDelim="~!";
String entryDelim="~^";
String pairDelim="=";
String[] groups = X.split(groupDelim);
int groupId = 0;
for(String group:groups){
String entries = group.split(entryDelim);
int entryId = 0;
for(String entry:entries){
String[] pair = entry.split(pairDelim);
/* now do stuff with */
groupId; // for sort order if it matters
entryId; // for sort order if it matters
String key = pair[0];
String value = pair[1];
entryId++;
}
groupId++;
}
关于java - 从一个连续字符串中提取重复属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6370512/