Как экранировать % в String.Format?
Я храню SQL-запрос в файле strings.xml и хочу использовать String.Format
для формирования финальной строки в коде. Мой запрос SELECT
использует оператор like, что-то вроде следующего:
SELECT Field1, Field2 FROM mytable WHERE Field1 LIKE '%something%'
Чтобы выполнить форматирование, я заменяю 'something' на %1$s, и он становится следующим:
SELECT Field1, Field2 FROM mytable WHERE Field1 LIKE \'%%1$s%\'
Я экранирую одинарную кавычку с помощью обратной косой черты. Тем не менее, я не могу экранировать знак %.
Как я могу включить оператор like в файл strings.xml?
3 ответ(ов)
Чтобы экранировать символ %
, нужно удвоить его: %%
.
Чтобы дополнить ранее предложенное решение, используйте следующий код:
str = str.replace("%", "%%")
Этот метод заменит каждый символ %
на %%
, что может быть полезно при работе с форматированием строк, например, в контексте использования функции, которая обрабатывает строки с форматированными символами.
Ваша задача заключается в том, чтобы заменить одиночные символы %
в строке на двойные %%
, при этом не затрагивая уже существующие двойные %%
. Для этого можно использовать следующий регулярное выражение:
str = str.replaceAll("(?:[^%]|\\A)%(?:[^%]|\\z)", "%%");
Разберём это регулярное выражение:
(?:[^%]|\\A)
— Эта часть проверяет, чтобы перед символом%
не было другого символа%
, или чтобы он находился в начале строки (\\A
).%
— Это непосредственно символ, который мы хотим заменить.(?:[^%]|\\z)
— Эта часть проверяет, чтобы после символа%
не было другого символа%
, или чтобы он находился в конце строки (\\z
).
Таким образом, данное выражение успешно заменяет одиночные %
на %%
, игнорируя те %
, которые уже являются частью двойного символа (%%
). Если у вас ещё есть вопросы или нужна дополнительная помощь, не стесняйтесь спрашивать!
Как преобразовать строку в int в Java?
Ошибка «Необходимо переопределить метод суперкласса» после импорта проекта в Eclipse
Преобразование 'ArrayList<String>' в 'String[]' в Java
Как сгенерировать случайную алфавитно-цифровую строку
Как заставить Android-устройство вибрировать с разной частотой?