仅将单引号替换为具有模式的子字符串

时间:2014-08-21 09:55:48

标签: java

我是java的新手,我有一个像这样的字符串:

insert into table (name,data) values ('test',
'
<?xml>
<some>
    <tag>
    </tag>
</some>
<data>
    Here replace ' with ''
</data>
</xml>
'
)

此处我只需要检查 <?xml></xml>标记内是否有'引号可用,如果是,则替换为''。我怎么用Java?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以使用substring()indexOf()方法提取您要查找的请求的特定部分,并replace()替换它们:

private final static String XML_START_TAG = "<?xml>";
private final static String XML_END_TAG = "</xml>";

private static String doubleSqlQuote(String req) {
    if (req.contains(XML_START_TAG) && req.indexOf(XML_START_TAG) < req.lastIndexOf(XML_END_TAG)) {
        req = req.substring(0, req.indexOf(XML_START_TAG))
                + req.substring(req.indexOf(XML_START_TAG), req.lastIndexOf(XML_END_TAG)).replace("'", "''")
                + req.substring(req.lastIndexOf(XML_END_TAG));
    }
    return req;
}

public static void main(String[] args) {
    final String req = "insert into table (name,data) values ('test','<?xml><some><tag></tag></some><data>Here replace ' with ''</data></xml>')";
    System.out.println(doubleSqlQuote(req));
}

结果:

insert into table (name,data) values ('test','<?xml><some><tag></tag></some><data>Here replace '' with ''''</data></xml>')

答案 1 :(得分:-1)

我想您正在尝试构建一个将一些数据写入数据库的SQL插入语句,并且您意识到当数据中有引号时您的语句会中断。 解决方案是:不要以这种方式构建语句。使用预准备语句并将数据作为参数提供。为您省去了很多麻烦。