2013-09-05 20 views
1

我已經把設置成sharedpreferences:如何處理來自sharedpreferences的數據getStringSet?

Set<String> bodyClick = new HashSet<String>(); 
String panelMarked = new Boolean(panel.marked).toString(); 

String[] click = {panel.name,panelMarked,clickTimes}; 

String clickBody = Arrays.toString(click); 

bodyClick.add(clickBody); 

sharedEditor.putStringSet("click", bodyClick); 

,這是我如何得到它:

Set<String> click = preferences.getStringSet("click", new HashSet<String>()); 

if(click != null){ 

    Iterator<String> iterator = click.iterator(); 

    while(iterator.hasNext()){ 
     String id = iterator.next(); 
    } 
} 

例如,這是字符串中:[左後輪擋泥板,假,0]

到目前爲止,一切都很好,工作。

但現在我想讓他自己的每個元素。我怎樣才能得到「左後方fener」在一個字符串,「假」在一個字符串和「0」在一個字符串?

任何人都可以發佈一些代碼?

回答

0

爲什麼不能用String [?分割] [1]

String id = iterator.next(); 
id = id.substring(1, id.length()-1) 
String[] parts = id.split(","); 
String part1 = parts[0]; // Left Near fender 
String part2 = parts[1]; // false 
+0

確定這個工作,但我有括號「[ ]「也在字符串中。 –

+0

我該如何解決這個問題? –

+0

@silvia_aut嘗試我的答案的第二部分,而不是我編輯它 – pfairbairn

1

我知道了:)

我的解決方案:

Set<String> click = preferences.getStringSet("click", new HashSet<String>()); 

if(click != null){ 

    Iterator<String> iterator = click.iterator(); 

    while(iterator.hasNext()){ 

     String id = iterator.next(); 

     int start = id.indexOf("[") + 1; 
     int end = id.indexOf("]")-1; 

     String items = String.copyValueOf(id.toCharArray(), start, end); 

     String[] ary = items.split(","); 
    } 
} 
+0

如果你是這種意圖的話,有一種更有效的子串處理方式,我更新了我的原始答案 - 它應該以你的方式工作,減少混亂 – pfairbairn

相關問題