Я храню запрос SQL в моем файле strings.xml, и я хочу использовать String.Format
для создания окончательной строки в коде. В SELECT
заявлении используется что-то вроде этого:
SELECT Field1, Field2 FROM mytable WHERE Field1 LIKE '%something%'
Чтобы отформатировать это, я заменяю 'что-то' на% 1 $ s, таким образом это становится:
SELECT Field1, Field2 FROM mytable WHERE Field1 LIKE \'%%1$s%\'
Я избегаю одинарных кавычек с обратной косой чертой. Однако я не могу избежать знака%.
Как я могу включить оператор like в мой файл strings.xml?
String.format()
вы могли бы использоватьMessageFormat()
вместо этого.Ответы:
Для того, чтобы избежать
%
, вам нужно будет удвоить его:%%
.источник
Чтобы дополнить предыдущее решение, используйте:
источник
Это более сильная замена регулярных выражений, которая не заменит %%, который уже удвоен во входных данных.
источник
Вот вариант, если вам нужно экранировать несколько% в строке, а некоторые уже экранированы.
Чтобы очистить сообщение перед его передачей в String.format, вы можете использовать следующее
Это работает с любым количеством символов форматирования, поэтому он заменит% на %%, %%% на %%%%, %%%%% на %%%%%% и т. Д.
Любые уже экранированные символы останутся без изменений (например, %%, %%%% и т. Д.)
источник