2009-05-04 137 views
2

我有这个字符串:"\"Blah \'Blah\' Blah\""。里面还有另一个字符串。我如何将其转换为:Blah 'Blah' Blah? (你看,进行反向转义的字符串)。这是因为我得到一个SQL WHERE查询:(还在里面引号和转义)字符串内部的Java字符串到字符串

WHERE blah="Blah \'Blah\' Blah" 

当我分析,我得到上面的字符串我将如何提取,避开字符串?还是有一些更简单的方法来做到这一点?谢谢,
艾萨克

+0

您是在字符串中构建sql where子句,还是使用参数化查询? – codeulike 2009-05-04 23:59:10

+8

Yo dawg,我听说你喜欢字符串,所以我们在你的字符串中放置了一个字符串,这样你就可以在你解析的时候解析 – 2009-05-05 00:02:13

+1

你是否想要避免双引号(它们在你的例子的开头和结尾)或者只是单引号(在中间)。此外,您使用的是什么类型的SQL,因为您可能需要重新转义SQL的引号。 – codeulike 2009-05-05 00:12:29

回答

17

不要这样做。

按照适当的步骤对数据库/平台上的查询进行参数化,您不必转义任何东西。您也将保护自己免受注射漏洞的侵害。

+0

+1,但我将如何破解网站。 ;( – cgp 2009-05-05 00:30:34

+2

不,你看,我不是创建SQL查询的人,解析它是我的工作,我有一个到Web服务的SQL接口,并且我完成了参数化部分,但对于那些谁不喜欢,不好的方式,我不得不支持它,我想我可以抛出一个异常,但我想完全支持它 – 2009-05-05 00:33:17

+0

然后你的Web服务接口坏了,它应该是查询和查询参数作为单独的项目 – FlySwat 2009-05-05 00:42:33

-1
"\"Blah \'Blah\' Blah\"".replaceAll("\"", "") 
+1

如果字符串是“\”Blah \\“Blah \\”Blah \“”,它会出错:Blah \ Blah \ Blah。 – 2009-05-05 00:03:02

0

把字符串中的属性文件,Java支持XML属性文件和引号字符并不需要在XML中进行转义。

使用Properties类的loadFromXML(InputStream in)方法。

然后,您可以使用MessageFormat类将值插入到字符串中(如果需要)。

0

这应该是正确的。这假定如果它以报价开始,则以报价结束。

if (val.startsWith("\"") || val.startsWith("\'")) 
    val = val.substring(1, val.length-2); 

您也可以添加val = val.trim();