2012-08-09 60 views
0

我目前有一個程序將一個哈希值的值集合傳遞給另一個將它們存儲爲字符串的類。存儲在字符串中的信息是這樣:如何將字符串與不同字符之間的字符串拆分?

Station 1=[1, Task 1, 10, false, 0, java.awt.Color[r=255,g=0,b=0]] 
Station 2=[2, Task 2, 10, false, 0, java.awt.Color[r=0,g=0,b=255]] 
Station 3=[3, Task 3, 10, false, 0, java.awt.Color[r=0,g=255,b=0]] 
Station 4=[4, Task 4, 10, false, 0, java.awt.Color[r=255,g=200,b=0]] 
Station 5=[5, Task 5, 10, false, 0, java.awt.Color[r=0,g=0,b=0]] 

,我試圖將它們分成(FE):

Station 1 
1 
Task 1 
10 
false 
0 
java.awt.Color[r=255,g=0,b=0] 

我第一次嘗試分割每個字符串但也有「= 「和」,「在設置了顏色值的字符串的最後部分,它會變得混亂起來。

我也嘗試過StringTokenizer(),但我在最後一部分也遇到了問題。

是否有一種更簡單或有效的方式來根據需要拆分這些字符串?歡迎任何建議!

在此先感謝您的時間,讓我知道是否需要代碼!

編輯:

我已經從包含HashMap正確地傳遞參數固定我的具體問題。

public MultiMap stationmap = new MultiHashMap(); 

public Collection getkeyValues(String s) { 
    Collection values = (Collection) stationmap.get(s); 
    return values; 
} 

這樣一來,我可以在此集合傳遞到哪裏,我需要他們的課,我可以通過它進一步迭代,以獲取值的鍵。

我會離開這個打開,因爲進一步的答案可能會幫助有類似字符串問題的人!

+1

聽起來像一個正則表達式將在這裏更好的匹配比簡單的分裂,特別是如果字符串總是適合一個獨特的模式。但是,如果您可以更改存儲方式,那麼使用更固有的可串行化(例如XML或JSON)會讓您的生活更輕鬆。 – 2012-08-09 03:12:09

+0

感謝您的回答!我用hashmaps方法解決了我的問題,但會編輯我的問題來解釋。 – 2012-08-09 03:19:49

+1

通常情況下最好不要將問題保持原樣,而只是簡單回答自己的問題,而不是將解決方案置於問題中。請參閱http://meta.stackexchange.com/questions/17845/etiquette-for-answering-your-own-question – 2012-08-09 03:25:07

回答

1

如果您正在控制字符串的格式,可以將它們格式化爲json並在那裏使用解析。

+0

謝謝你的回答。我已經用地圖方法解決了我的問題,但是會讓我的問題處於打開狀態,並對其進行編輯以解釋我如何修復它。 – 2012-08-09 03:20:32

1

我不確定你爲什麼以這種方式工作:)其他類接受HashMap並以相同的方式處理它會更容易嗎?如果你將它輸出到一個文件,你可以將它序列化; hashmaps是可序列化的。

1

使用谷歌的圖書館番石榴

public static List<String> convertToList(String str) { 
    List<String> list = Lists.newArrayList(Splitter.on(CharMatcher.anyOf("=[,")).omitEmptyStrings().trimResults().limit(7).split(str)); 
    /** 
    Returns: 
      Station 1 
      1 
      Task 1 
      10 
      false 
      0 
      java.awt.Color[r=255,g=0,b=0]] 
      */ 


    int lastIndex = list.size() - 1; 
    String last = list.get(lastIndex); 
    String amendedValue = last.substring(0, last.length()-1); 
    list.set(lastIndex, amendedValue); 
    // Convert the last element "java.awt.Color[r=255,g=0,b=0]]" to "java.awt.Color[r=255,g=0,b=0]" 


    return list; 
} 

或者:

public static List<String> convertToList2(String str) { 
    str = str.substring(0, str.length()-1); 
    return Lists.newArrayList(Splitter.on(CharMatcher.anyOf("=[,")).omitEmptyStrings().trimResults().limit(7).split(str)); 
} 
相關問題