Java sql删除括号

时间:2013-12-15 19:17:19

标签: java sql regex sqlite

这是我收到的输出:

INSERT INTO [ J] VALUES ([J1, Sorter, Paris)
INSERT INTO [ J] VALUES (J2, Punch, Rome)
INSERT INTO [ J] VALUES (J3, Reader, Athens)
INSERT INTO [ J] VALUES (J4, Console, Athens)
INSERT INTO [ J] VALUES (J5, Collator, London)
INSERT INTO [ J] VALUES (J6, Termninal, Oslo)
INSERT INTO [ J] VALUES (J7, Tape, London])

正如你所看到的那样,我有一个[在开头,一个]在最后,我不知道是什么原因造成的?我怎么能删除它?我用.replace(“[]”,“”)尝试了正则表达式;在哪里我相信问题正在发生但无济于事。

插入代码:

  if (state == 3||!tableLineScanner.hasNextLine()){
                        try{
                            Class.forName("org.sqlite.JDBC");
                            Connection conn = null;
                            conn = DriverManager.getConnection("jdbc:sqlite:test.db");
                            //TODO Input values goes here
                            tableName =""+tableNames;
                            Statement stmt = conn.createStatement();
                            String query = tableValues + "";
                            ResultSet rs = stmt.executeQuery("SELECT * FROM "+ tableName);
                            ResultSetMetaData rsmd = rs.getMetaData();
                            query.replaceAll("[ ]","");
                            tableName =""+tableNames;
                            tableName.replaceAll("[ ]","");
                            String[] splittedOutput = query.split(", ");
                            int valuesOnLine = rsmd.getColumnCount();
                            for (int i = 0; i < splittedOutput.length; i++) {
                                if (i % valuesOnLine == 0) {
                                    System.out.print("INSERT INTO " + tableName + " VALUES (");
                                }
                                System.out.print(splittedOutput[i]);
                                if (i % valuesOnLine == valuesOnLine - 1) {
                                    System.out.println(")");
                                } else {
                                    System.out.print(", ");
                                }
                            }
                            tableNames.clear();
                            tableValues.clear();
                            tableFields.clear();
                        }
                        catch (SQLException ex){
                            System.out.println("SQLException: " + ex.getMessage());
                            System.out.println("VendorError: " + ex.getErrorCode());
                        }
                        catch (ClassNotFoundException e){
                            e.printStackTrace();
                        }
                    }

2 个答案:

答案 0 :(得分:1)

如果tableNames中有多个元素,您将会遇到更多问题。你打算只使用第一个表名吗?或者使用所有这些来迭代tableNames?现在,您正在将tableNames转换为[element1, element2, element3]形式的字符串,这几乎肯定不是您想要的。

如果您确实想要删除[]个字符,则需要编写replaceAll("[\\[\\]]", "")之类的内容,因为[]是正则表达式中的特殊字符。

答案 1 :(得分:0)

通过将splittedOutput配置为:

,可以使用删除括号的解决方案
System.out.print(splittedOutput[i].replaceAll("[\\[\\]]", ""));