2016-05-10 156 views
-3

我正在從ArrayList返回一組字符串。SplitList/Tokenize/Split字符串從ArrayList返回的一組字符串

這是我通過ArrayList迭代時得到的字符串。

Welcome| 
To| 
Stackoverflow| 
; 
Welcome| 
To| 
Zootopia| 
; 
This| 
is| 
last - String| 
; 

我想根據';'標記字符串,這樣,

這是我做了什麼:

for(String str: arrayList) { 
    //System.out.println(str); 
    if(str.contains(";")) { 
     StringTokenizer st = new StringTokenizer(str,";"); 
     while(st.hasMoreTokens()) { 
      System.out.println(st.nextToken()); 
     } 
    } 
} 

這就是我期待是:

Welcome|To|Stackoverflow- one token 
Welcome|To|Zootopia - one token 
This|is|last-String|- one token 

(因爲讓我們這樣第一個String:Welcome|To|Stackoverflow - 再往我想分割'|' - 所以我可以得到單獨的令牌)

之後,我想通過這個'|'字符。有沒有更好的方法來做到這一點?

+1

到目前爲止你做了什麼? – Daniel

+0

你期望你的最終產出是什麼? – Daniel

+1

通過希望*「來標記」*,所以你的意思是你想*連接*字符串? ---如果字符串已經分離,爲什麼連接它們只是爲了再次分割它們?或者「*」通過這個'|''解析*是否意味着別的? – Andreas

回答

1

StringTokenizer是遺留的類,由於兼容性的原因而被保留,儘管它在新代碼中的使用不受歡迎。建議任何尋求此功能的人使用String或java.util.regex包的拆分方法。

class Tokenizer { 
    //for Java older than 8 
    public static String joinString(Iterable<String> strings, String separator) { 
     StringBuilder sb = new StringBuilder(); 
     String sep = ""; 
     for(String s: strings) { 
      sb.append(sep).append(s); 
      sep = separator; 
     } 
     return sb.toString();       
    } 

    public static void main(String args[]) { 
     ArrayList<String> strings = new ArrayList<String>() {{ 
      add("Welcome|"); 
      add("To|"); 
      add("Stackoverflow|"); 
      add(";"); 
      add("Welcome|"); 
      add("To|"); 
      add("Zootopia|"); 
      add(";"); 
      add("This|"); 
      add("is|"); 
      add("last - String|"); 
      add(";"); 
     }}; 

     //String in = String.join("", strings); 
     String in = joinString(strings, ""); 

     for(String outerToken : in.split(";")) { 
      System.out.println(outerToken); 
      for(String innerToken : outerToken.split("\\|")) { 
       System.out.println("\t" + innerToken); 
      } 
     } 
    } 
} 
+0

感謝您的StringTokenizer信息和您的代碼工作正常 - 但我想知道我應該如何擺脫';' - 當我的字符串是我已經添加到頂部我的問題。有任何想法嗎? – inityk

+0

我已經更新了我的答案。 –

+0

連接方法未定義爲類型字符串 – inityk