2011-06-16 20 views
2

属性我有一个字符串与具有两种类型的分离器的。重复提取从一个连续字符串

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~!~^ 

以前我的工作假设没有重复的数据组,只是基于等于标签号码的关键字映射到地图。但是这不适用于重复组,因为它们会覆盖。

编辑我想从这个字符串中取值并将它们映射到不同的对象属性。基本上左边的数字指的是一个标签,数值就是数值。因此,标记20002 = USA,我需要将值USA映射到我的新对象中的一个属性。无效的值只是默认值,以便标记它们已被分配但未得到值

现在我正在做一些脑筋想一想更好的映射数据和组的方法。同时维护标签和与其关联的值。

+1

我想你可能想澄清你的字符串是如何解释的。 “=”的含义是什么? – Waldheinz 2011-06-16 10:43:45

+0

基本上,左边的数字指的是一个标签,其值只是数值。因此,标记20002 = USA,我需要将值USA映射到我的新对象中的一个属性。无效值只是默认值,以便标记它们已分配但没有值。 – Will 2011-06-16 10:54:17

+0

映射到相同标记的一组值。 我得到一个stringmsg通过它,我必须把它的值。 – Will 2011-06-16 11:06:06

回答

0

伊克...坏的数据格式。 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++; 
} 
相关问题