如何在String.Format中转义%?

Mat*_*hew 402 java string syntax android

我在我的strings.xml文件中存储SQL查询,我想用来String.Format在代码中构建最终的字符串.该SELECT语句使用类似的东西,如下所示:

SELECT Field1, Field2 FROM mytable WHERE Field1 LIKE '%something%'
Run Code Online (Sandbox Code Playgroud)

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

SELECT Field1, Field2 FROM mytable WHERE Field1 LIKE \'%%1$s%\'
Run Code Online (Sandbox Code Playgroud)

我用反斜杠来逃避单引号.但是我无法逃脱%号.

如何在strings.xml文件中包含like语句?

lim*_*imc 846

要逃避%,你需要加倍:%%.


Cav*_*iro 11

要补充之前提出的解决方案,请使用:

str = str.replace("%", "%%");
Run Code Online (Sandbox Code Playgroud)

  • @Toilal 为什么有人会逃脱已经逃脱的东西?如果他愿意,为什么不真正去做呢?也许他打算有两个 % 符号,所以正确的转义形式应该是 '%%%%' (3认同)

Toi*_*lal 5

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

str = str.replaceAll("(?:[^%]|\\A)%(?:[^%]|\\z)", "%%");
Run Code Online (Sandbox Code Playgroud)