Je dois concaténer ces deux chaînes de mes fichiers de ressources / valeurs:
<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on </string>
<string name="Toast_Memory_GameWon_part2"> flips !</string>
Je le fais de cette façon:
String message_all_pairs_found = getString(R.string.Toast_Memory_GameWon_part1)+total_flips+getString(R.string.Toast_Memory_GameWon_part2);
Toast.makeText(this, message_all_pairs_found, 1000).show();
Mais les espaces à la fin de la première chaîne et au début de la deuxième chaîne ont disparu (lorsque le Toast est affiché) ...
Que devrais-je faire ?
Je suppose que la réponse se trouve quelque part ici dans ce lien de documentation
ou est-ce quelque chose comme utiliser & ;
pour le caractère "&" ??
android
string-concatenation
Hubert
la source
la source
Réponses:
Même si vous utilisez le formatage de chaîne, vous avez parfois besoin d’espaces blancs au début ou à la fin de votre chaîne. Pour ces cas, ni échapper avec
\
, nixml:space
attribut n'aide. Vous devez utiliser une entité HTML 
pour un espace.À utiliser
 
pour les espaces blancs incassables.Utilisez
 
pour l'espace régulier.la source
 
et je n'ai eu aucune erreur de construction, mais mon espace était toujours ignoré. 
travaillé, mais je ne veux pas d'un espace blanc incassable. Je veux juste un espace régulier.\u0020
travaillé.J'ai rencontré le même problème. Je voulais laisser un blanc à la fin d'une chaîne de ressources représentant un nom de champ à l'écran.
J'ai trouvé une solution sur ce rapport de problème: https://github.com/iBotPeaches/Apktool/issues/124
C'est la même idée que Duessi suggère. Insérez
\u0020
directement dans le XML pour un espace que vous souhaitez conserver.Exemple :
Le remplacement est effectué au moment de la construction, il n'affectera donc pas les performances de votre jeu.
la source
\u0020
est l'ESPACE du code ASCII. C'était le meilleur choix pour mon projet car je devais m'assurer qu'il était ASCII.Cette documentation suggère que la citation fonctionnera:
la source
<string name="my_str_spaces">" Before <b>and</b> after? "</string>
Enclose the entire string in double quotes ("This'll work", for example)
endroit où il discute de la fuite d'unSingle quote (')
.J'utilise simplement le code UTF pour l'espace "\ u0020" dans le fichier strings.xml.
fonctionne très bien. (Android aime les codes UTF)
la source
Cette question est peut-être ancienne, mais la méthode la plus simple consiste à présent à ajouter des guillemets. Par exemple:
la source
Il est possible d'espacer avec différentes largeurs:
| ESPACE | ESPACE MINCE | ESPACE CHEVEUX | pas d'espace |
Visualisation:
la source
Si vous voulez vraiment le faire comme vous le faisiez, je pense que vous devez lui dire que l'espace est pertinent en l'échappant:
Cependant, j'utiliserais un formatage de chaîne pour cela. Quelque chose comme ceci:
puis
la source
String.format
provoque de nombreuses allocations de mémoire indésirables dans un jeu.utilisez "" avec la valeur de ressource de chaîne.
Exemple: "valeur avec espaces"
OU
utilisez le code \ u0020 pour les espaces.
la source
Fonctionne bien que j'utilise \ u0020
Fichier Java
Capture d'écran ici Image montrant le fonctionnement de ce code
la source
Un argument peut être avancé pour ajouter l'espace par programmation. Étant donné que ces cas seront souvent utilisés dans les enchaînements, j'ai décidé d'arrêter la folie et de faire juste l'ancien
+ " " +
. Je dirais que cela aura du sens dans la plupart des langues européennes.la source
Toutes les réponses ici n'ont pas fonctionné pour moi. Au lieu de cela, pour ajouter un espace à la fin d'une chaîne dans
XML
je l'ai faitla source
Je n'ai aucune idée d'Android en particulier, mais cela ressemble à la gestion habituelle des espaces blancs XML - les espaces blancs de début et de fin dans un élément sont généralement considérés comme insignifiants et supprimés. Essayez
xml:space
:la source
xml:space
semble être ignoré.Cela peut ne pas réellement répondre à la question (Comment conserver les espaces blancs en XML), mais cela peut résoudre le problème sous-jacent plus gracieusement.
Au lieu de compter uniquement sur les ressources XML, concaténer à l'aide de chaînes de format. Donc, supprimez d'abord les espaces blancs
Et puis construisez votre chaîne différemment:
la source
Il y a aussi la solution de l'utilisation
CDATA
. Exemple:Mais en général, je pense que
\u0020
c'est assez bon.la source
Si vous avez besoin de l'espace pour le concaténer ultérieurement avec d'autres chaînes, vous pouvez utiliser l'approche de formatage de chaîne pour ajouter des arguments à votre définition de chaîne:
Ensuite, pour formater la chaîne (par exemple si vous avez une erreur retournée par le serveur, sinon utilisez
getString(R.string.string_resource_example)
):Ce qui se traduit par:
la source
Cela ne fonctionne pas avec xml: espace = "préserver"
donc je l'ai fait le plus rapidement =>
J'ai simplement ajouté un + "" + là où j'en avais besoin ...
la source