it-swarm-ru.tech

Как избежать% в String.Format?

Я храню 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?

367
Matthew

Чтобы избежать %, вам нужно удвоить его: %%.

791
limc

Чтобы дополнить предыдущее решение, используйте:

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

Это более сильная замена регулярных выражений, которая не заменит %%, который уже удвоен во входных данных.

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