2012-04-06 68 views
2

我有一個字符串來自數據庫。 字符串是這樣的: -正則表達式避免:和,在字符串

ABC:def,ghi:jkl,hfh:fhgh,ahf:jasg 

總之String:String,並重復了較大的值。

我需要解析此字符串以獲得不作任何:,單詞和每個單詞存儲在ArrayList中

我可以用分割功能(兩次),這樣做,但我想通了,使用正則表達式我可以做它一氣呵成,並得到該ArrayList ..

String strLine="category:hello,good:bye,wel:come"; 
     Pattern titlePattern = Pattern.compile("[a-z]"); 
     Matcher titleMatcher = titlePattern.matcher(strLine); 
     int i=0; 
     while(titleMatcher.find()) 
     { 
      i=titleMatcher.start(); 
      System.out.println(strLine.charAt(i)); 
     } 

但是它沒有給我正確的results..It結束了給我比賽的索引中找到的,然後我需要追加它是不那麼合乎邏輯的,高效的, 。

有各地的任何方式..

回答

5
String strLine="category:hello,good:bye,wel:come"; 
String a[] = strLine.split("[,:]"); 
for(String s :a) 
    System.out.println(s); 
0

即使可以使用正則表達式來一次解析整個字符串,我認爲這將是比用多個步驟拆分它的可讀性。

1

使用Java StringTokenizer 樣品:

StringTokenizer st = new StringTokenizer(in, ":,"); 
while(st.hasMoreTokens()) 
    System.out.println(st.nextToken()); 
+0

哪一個更有效的......我知道我可以很容易使用令牌,但我認爲採用分體式會更高效,代幣.. – AngelsandDemons 2012-04-06 06:24:45

+0

它取決於字符串的長度。如果字符串非常短,您可以分割,如果它很長,最好迭代令牌。然後使用標記器可以跳過空標記,例如,如果在循環過程中有「a :: b:c」。 – dash1e 2012-04-06 06:33:13

+0

我的字符串可以很短或可以非常非常long.One事情肯定字符串的形成總是相同的.. String1:AssociatedString,String2:AssociatedString等.. – AngelsandDemons 2012-04-06 07:58:48