我目前正在尝试使用1_3_5_1,1_3_7_1,1_4_9_1
我已经运行了for循环:
String[] row;
for(String value : selValues.split("\\,")){
System.err.println("value to be deleted :: "+value);
for(int i = 0; i <= 4; i++) {
row = value.split("\\_");
System.out.println("print row :: " + row[0]);
System.out.println("print row :: " + row[1]);
System.out.println("print row :: " + row[2]);
}
我正在尝试捕获由“_”分隔的前4个。我正在寻找的是行[]:
row[1,3,5,1]
row[1,3,7,1]
row[1,4,9,1]
因为这些是我将在查询中发送到数据库的值。
现在,我的ouptut只是重复1,3,5,1。
非常感谢任何帮助。可能有更好的方法来做到这一点。谢谢!
解
感谢大家的投入。我已经使用它们清理它并且有这个:
if(selValues != null && !selValues.trim().equals("")){
for(String value : selValues.split(",")){
row = value.split("_");
try{
//database call here
}
catch (Exception e) {
e.printStackTrace();
}
}
}
答案 0 :(得分: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]
答案 1 :(得分:2)
您的内部 for-loop 是不必要的。其控制变量i
未使用。
否则,您的代码会给出正确的输出。
对于较大的以逗号分隔的列表,最好使用csv-reader,而不是使用字符串。