2011-06-16 17 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++; 
} 
相關問題