2013-03-13 24 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