web-dev-qa-db-fra.com

Comment échapper à% dans String.Format?

Je stocke une requête SQL dans mon fichier strings.xml et je souhaite utiliser String.Format pour créer la dernière chaîne dans le code. L'instruction SELECT utilise un objet similaire à celui-ci:

SELECT Field1, Field2 FROM mytable WHERE Field1 LIKE '%something%'

Afin de formater cela, je remplace "quelque chose" par% 1 $ s pour qu'il devienne:

SELECT Field1, Field2 FROM mytable WHERE Field1 LIKE \'%%1$s%\'

J'échappe aux guillemets simples avec la barre oblique inverse. Cependant, je ne peux pas échapper au signe%.

Comment puis-je inclure une instruction similaire dans mon fichier strings.xml?

384
Matthew

Pour échapper à %, vous devrez le doubler: %%.

816
limc

Pour compléter la solution précédente, utilisez:

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

C'est un remplacement plus rationnel qui ne remplacera pas %% déjà doublé dans l'entrée.

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