Je stocke une requête SQL dans mon fichier strings.xml et je souhaite utiliser String.Format
pour créer la chaîne finale dans le code. L' SELECT
instruction utilise un like, quelque chose comme ceci:
SELECT Field1, Field2 FROM mytable WHERE Field1 LIKE '%something%'
Afin de formater ce que je remplace «quelque chose» par% 1 $ s, il devient:
SELECT Field1, Field2 FROM mytable WHERE Field1 LIKE \'%%1$s%\'
J'échappe aux guillemets simples avec la barre oblique inverse. Cependant, je ne parviens pas à échapper au signe%.
Comment puis-je inclure une instruction similaire dans mon fichier strings.xml?
String.format()
vous n'envisagez d'utiliser à laMessageFormat()
place.Réponses:
Pour échapper
%
, vous devrez doubler jusqu'à:%%
.la source
Pour compléter la solution précédente, utilisez:
la source
Il s'agit d'un remplacement regex plus fort qui ne remplacera pas les %% déjà doublés en entrée.
la source
Voici une option si vous devez échapper plusieurs% dans une chaîne avec certains déjà échappés.
Pour filtrer le message avant de le transmettre à String.format, vous pouvez utiliser ce qui suit
Cela fonctionne avec n'importe quel nombre de caractères de formatage, il remplacera donc% par %%, %%% par %%%%, %%%%% par %%%%%% etc.
Il laissera seuls les caractères déjà échappés (par exemple %%, %%%% etc.)
la source