删除最后一个逗号java

时间:2014-06-08 06:05:29

标签: java sql arrays

我正在尝试从2D数组中将元素插入表中。 我在删除最后一个逗号以正确编写sql语句时遇到问题

这是代码

            String m="";
            String matInsert = null;
            for (int k=0;k<di.mat.length;k++) {  //row
            for (int j=0;j<di.mat[k].length;j++) {

                m+=di.mat[k][j]+", ";
                matInsert=new String("INSERT INTO "+ tableName  +"("+ff+")"+"values" +"("+m+")");   

        }
            m = m.replaceAll(", $","");
            //m=m.substring(0,m.lastIndexOf(","));
            System.out.println(matInsert);
            stmt1.executeUpdate(matInsert);
            }

我非常努力,但我没有成功删除它

请帮忙。

4 个答案:

答案 0 :(得分:2)

我通常对这类事物使用以下结构

String sep = "";
for(...) {
    m += (sep+di.mat[k][j]);
    sep = ",";
}

这不是最好的,但它有效。

现在,您的代码中的部分问题是您在循环内创建matInsert,然后在循环后更新m并且不重建它。

更新的代码:

 String matInsert = null;
 for (int k=0;k<di.mat.length;k++) {  //row
    String m="";
    String sep = "";
    for (int j=0;j<di.mat[k].length;j++) {
        m+= (sep+di.mat[k][j]);
        sep = " ,";
    }
    matInsert="INSERT INTO "+ tableName  +"("+ff+")"+"values" +"("+m+")";   
    System.out.println(matInsert);
    stmt1.executeUpdate(matInsert);
 }

答案 1 :(得分:1)

您可以使用简单的逻辑来避免添加逗号。最好在现场省略不必要的东西,而不是用其他操作替换它。

for (int k=0;k<di.mat.length;k++) {  //row
  for (int j=0;j<di.mat[k].length;j++) {
    m+=di.mat[k][j];

    if(j<di.mat[k].length -1){ //This condition will escape you from last comma addition
      m+= ", ";    
    }
  }
}

另一点,使用StringBuilder#append代替String + concat来提高效率。

答案 2 :(得分:0)

由于m是一个String,你可以使用m.substring(0,m.length() - 1)或者在内部循环中添加和if语句检查它是否是k和j的最后一个索引然后不要最后添加一个逗号。

答案 3 :(得分:0)

如果要删除字符串中字符的最后一个实例,如删除它,请使用:

public class Something
{
    public static void main(String[] args)
    {
        String s = "test";
        StringBuilder sb = new StringBuilder(s);
        char delval = 'c';

        int lastIndex = -1;

        for(int i = 0; i < s.length()-1; i++)
        {
            if(s.charAt(i) == delval)
            {
                lastIndex = i;
            }
        }

        try{
            sb.deleteCharAt(lastIndex);
            System.out.println(s);
        }
        catch(Exception e){
            System.out.println("Value not present");
        }
    }

}