как избежать% в string.format?

<p>я храню sql-запрос в своем файле strings.xml и хочу использовать <code>string.format</code> для построения последней строки в коде. в выражении <code>select</code> используется что-то вроде этого:</p><pre><code>select field1, field2 from mytable where field1 like '%something%' </code></pre><p>чтобы отформатировать это, я заменяю 'что-то' на% 1 $ s, таким образом это становится:select field1, field2 from mytable where field1 like '%%1$s%\' </code></pre><p>я избегаю одинарных кавычек с обратной косой чертой. однако я не могу избежать знака%.</p><p>как я могу включить оператор like в мой файл strings.xml?</p>

<p>чтобы избежать <code>%</code>, вам нужно удвоить его: <code>%%</code>.</p>

<p>чтобы дополнить предыдущее решение, используйте:</p><pre><code>str = str.replace("%", "%%"); </code></pre>

<p>это более сильная замена регулярных выражений, которая не заменит %%, который уже удвоен во входных данных.</p><pre><code>str = str.replaceall("(?:[^%]|\\a)%(?:[^%]|\\z)", "%%"); </code></pre>