我是java的新手,我有一个像这样的字符串:
insert into table (name,data) values ('test',
'
<?xml>
<some>
<tag>
</tag>
</some>
<data>
Here replace ' with ''
</data>
</xml>
'
)
此处我只需要检查 <?xml></xml>
标记内是否有'
引号可用,如果是,则替换为''
。我怎么用Java?
提前致谢。
答案 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插入语句,并且您意识到当数据中有引号时您的语句会中断。 解决方案是:不要以这种方式构建语句。使用预准备语句并将数据作为参数提供。为您省去了很多麻烦。