2013-03-13 25 views
1

我目前正試圖通過字符串的1_3_5_1,1_3_7_1,1_4_9_1如何解析分隔符逗號分隔字符串爲前4個值在Java中

輸出解析我爲循環運行試圖捕獲由「_」分隔的前4個。我正在尋找的行是[ row[1,3,5,1] row[1,3,7,1] row[1,4,9,1]

由於這些是我將發送到查詢中的數據庫的值。

現在,我的ouptut只是重複1,3,5,1。

任何幫助將不勝感激。這可能有更好的方法。謝謝!

SOLUTION

感謝大家的輸入。我已經清理起來使用,並有這樣的:

if(selValues != null && !selValues.trim().equals("")){ 
     for(String value : selValues.split(",")){ 
       row = value.split("_"); 
       try{ 
       //database call here 
       } 
       catch (Exception e) { 
        e.printStackTrace(); 
       } 
     } 
    } 
+0

使用String.split( 「」),沒有兩個反斜槓。 – 2013-03-13 21:03:52

回答

4

,你必須從正則表達式中刪除\\

這會做你需要什麼:

@Test 
public void split2() { 
    String input = "1_3_5_1,1_3_7_1,1_4_9_1"; 
    String[] csv = input.split(","); 
    for(String v : csv) { 
     String[] usv = v.split("_"); 
     System.out.print("["); 
     for(int i = 0; i < usv.length; i++) { 
      System.out.print(usv[i]); 
      if(i < usv.length-1) { 
       System.out.print(", "); 
      } 
     } 
     System.out.println("]"); 
    } 
} 

輸出

[1, 3, 5, 1] 
[1, 3, 7, 1] 
[1, 4, 9, 1] 
+0

@Cthulhu,是的,但是他的投入毫無用處,他在問題中沒有提到它。我不應該說'你必須刪除',但'你可以刪除',因爲它在發佈的代碼中沒有用處 – A4L 2013-03-13 21:18:23

2

你內心for循環是不必要的。其控制變量i未被使用。否則,您的代碼會提供正確的輸出。

對於較大的以逗號分隔的列表,最好使用csv-reader,而不是使用字符串。

輸出:http://ideone.com/dzaIsh