如何转义%在字符串.格式?

我在strings.xml文件中存储一个SQL查询,我想使用String.Format在代码中构建最终的字符串。SELECT语句使用了一个like,就像这样:

SELECT Field1, Field2 FROM mytable WHERE Field1 LIKE '%something%'

为了格式化,我用%1$s替换'something',所以它变成:

SELECT Field1, Field2 FROM mytable WHERE Field1 LIKE \'%%1$s%\'

我用反斜杠转义单引号。然而,我无法转义%符号。

如何在我的strings.xml文件中包含一个喜欢的语句?

194732 次浏览

要转义%,你需要将它加倍:%%

要补充前面提到的解决方案,请使用:

str = str.replace("%", "%%");

这是一个更强的正则表达式替换,不会替换输入中已经翻倍的%%。

str = str.replaceAll("(?:[^%]|\\A)%(?:[^%]|\\z)", "%%");