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?
Pour échapper à %
, vous devrez le doubler: %%
.
Pour compléter la solution précédente, utilisez:
str = str.replace("%", "%%");
C'est un remplacement plus rationnel qui ne remplacera pas %% déjà doublé dans l'entrée.
str = str.replaceAll("(?:[^%]|\\A)%(?:[^%]|\\z)", "%%");