java中“和”的正则表达式

时间:2013-12-06 02:16:04

标签: java regex escaping

我有一个字符串,像这些“Marko的地方”“boulevard”Arequipa“”包含单引号或双引号的字符串,在Java中使用正则表达式如何获得前面的字符串得到像这样的“Marko \ s place”“boulevard \ “Arequipa \”“我没有正则表达式的经验,感谢任何答案

好的,我正在读取mysql表中的记录并构造insert sql以将此信息传递给sqlite表

    Statement qryMySQL= cnMySql.createStatement();
        ResultSet rs = qryMySQL.executeQuery("select * from tblclientes ");

        Statement qrySQLite = cnSqLite.createStatement();
        qrySQLite.addBatch("begin transaction");
        qrySQLite.addBatch("CREATE TABLE 'tblclientes' ('_id' INTEGER,'Nombres' varchar(25) DEFAULT NULL,'Apellidos' varchar(25) DEFAULT NULL,'RazSocial' varchar(20) DEFAULT NULL,'Direccion' varchar(50) DEFAULT NULL,'Ciudad' varchar(15) DEFAULT 'Arequipa','Fono' varchar(12) DEFAULT NULL,'Fax' varchar(12) DEFAULT NULL,'Email' varchar(35) DEFAULT NULL,'Ruc' varchar(12) DEFAULT NULL,'latitud' decimal(20,14) DEFAULT NULL,'longitud' decimal(20,14) DEFAULT NULL,'ruta' varchar(10) DEFAULT NULL,'sincro' CHAR(10),'copiar' BOOL DEFAULT 1)");

        while (rs.next()) 
        { 
            //System.out.println (rs.getInt(1) + " " + rs.getString (2) );
            sql = "INSERT INTO tblclientes(_id,nombres,apellidos) " +
                    "VALUES("+rs.getInt("id")+", \""+rs.getString("nombres")+"\",\""+rs.getString("apellidos")+"\")";
            qrySQLite.addBatch(sql);
           // System.out.println (sql);
        }
        qrySQLite.addBatch("end transaction");
        qrySQLite.executeBatch();

但是mysql表中的某些字段的字符“和”导致sql插入句子出错而我需要这个

<Marko's place> ===> <Marko\'s place>
<boulevard "Arequipa"> ====> <boulevard \"Arequipa">

所以结果必须在“或”

之前添加\

1 个答案:

答案 0 :(得分:1)

我可能会使用Apache Commons StringEscapeUtils它会在你的问题中找到更多的角落案例 -

StringEscapeUtils.escapeJava(str);

否则,您可以像这样使用字符串替换

String str = "\"Marko's place\"";
System.out.println(str.replace("'", "\\'").replace("\"", "\\\""));