Domanda

Ho per concatenare questi due stringhe dai miei file di risorse / valore:

<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on </string>
<string name="Toast_Memory_GameWon_part2"> flips !</string>

Lo faccio in questo modo:

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();

Ma gli spazi alla fine della prima stringa e all'inizio della seconda stringa sono scomparsi (quando viene mostrato il Toast) ...

Che cosa devo fare?

Credo che la risposta è da qualche parte qui in questo link

o è qualcosa di simile utilizzando &amp ; per il carattere "&" ??

È stato utile?

Soluzione

Anche se si utilizza la formattazione di stringhe, a volte è ancora necessario spazi bianchi all'inizio o alla fine della stringa. Per questi casi, né la fuga con \, nè attributo xml:space aiuta. È necessario utilizzare HTML entità &#160; per uno spazio bianco.

Usa &#160; per spazi infrangibile.
Utilizzare &#032; per lo spazio normale.

Altri suggerimenti

Ho incontrato lo stesso problema. Ho voluto lasciare un vuoto alla fine di una stringa di risorsa che rappresenta un nome di campo sullo schermo.

Ho trovato una soluzione a questo problema rapporto: https://github.com/iBotPeaches/Apktool / temi / 124

Questa è la stessa idea che Duessi suggerisce. Inserire \u0020 direttamente in XML per un vuoto che si desidera conservare.

Esempio:

<string name="your_id">Score :\u0020</string>

La sostituzione avviene al momento della compilazione, quindi non influisce sulle prestazioni del vostro gioco.

suggerisce citando funziona:

<string name="my_str_spaces">" Before and after? "</string>

mi basta usare il codice UTF per lo spazio "\ u0020" nel file strings.xml.

<string name="some_string">\u0020The name of my string.\u0020\u0020</string>

grandi opere. (Android ama codici UTF)

Questa domanda potrebbe essere vecchia, ma fin d'ora il modo più semplice per farlo è quello di aggiungere le virgolette. Ad esempio:

<string name="Toast_Memory_GameWon_part1">"you found ALL PAIRS ! on "</string>
<string name="Toast_Memory_GameWon_part2">" flips !"</string>

Non è possibile spazio con differenti larghezze:

<string name="space_demo">|&#x20;|&#x2009;|&#x200A;||</string>

| SPACE | SPACE THIN | CAPELLI SPACE | nessuno spazio |

Visualizzazione:

entrare descrizione dell'immagine qui

Se si vuole veramente farlo nel modo che stavi facendo, allora penso che si deve dire è che lo spazio bianco è rilevante per scampo:

<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on\ </string>
<string name="Toast_Memory_GameWon_part2">\ flips !</string>

Tuttavia, mi piacerebbe utilizzare formattazione delle stringhe per questo. Qualcosa di simile a quanto segue:

<string name="Toast_Memory_GameWon">you found ALL PAIRS ! on %d flips !</string>

poi

String message_all_pairs_found = String.format(getString(R.string.Toast_Memory_GameWon), total_flips);

l'uso "" con il valore della risorsa di stringa.

Esempio:    "Valore con spazi"

o

uso \ code u0020 per gli spazi.

Lavorare bene Sto usando \ u0020

<string name="hi"> Hi \u0020 </string>
<string name="ten"> \u0020 out of 10  </string>
<string name="youHaveScored">\u0020 you have Scored \u0020</string>

file Java

String finalScore = getString(R.string.hi) +name+ getString(R.string.youHaveScored)+score+ getString(R.string.ten);
               Toast.makeText(getApplicationContext(),finalScore,Toast.LENGTH_LONG).show();

Cattura schermo qui Immagine di mostrare lavoro di questo codice

Tutte le risposte qui non ha funzionato per me. Invece, per aggiungere uno spazio alla fine di una stringa in XML ho fatto questo

<string name="more_store">more store<b> </b> </string>

Un argomento può essere fatto per l'aggiunta dello spazio di programmazione. Dal momento che questi casi saranno spesso utilizzati in concatenazioni, ho deciso di fermare la follia e solo fare il vecchio + " " +. Questi avranno senso in la maggior parte lingue europee, vorrei raccogliere.

Non ho idea su Android in particolare, ma questo sembra il solito trattamento spazi XML - spazi iniziali e finali all'interno di un elemento è generalmente considerato insignificante e rimosso. Prova xml:space:

<string name="Toast_Memory_GameWon_part1" xml:space="preserve">you found ALL PAIRS ! on </string>
<string name="Toast_Memory_GameWon_part2" xml:space="preserve"> flips !</string>

Questo non può realmente rispondere alla domanda (Come mantenere gli spazi bianchi in XML), ma si può risolvere il problema di fondo più garbo.

Invece di basarsi solo sulle risorse XML, concatenare utilizzando stringhe di formato. Quindi, prima rimuovere le spazi bianchi

<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on</string>
<string name="Toast_Memory_GameWon_part2">flips !</string>

E poi costruire la stringa in modo diverso:

String message_all_pairs_found = 
      String.format(Locale.getDefault(), 
                    "%s %d %s", 
                    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();

C'è anche la soluzione di utilizzare CDATA. Esempio:

<string name="test"><![CDATA[Hello          world]]></string>

Ma in generale penso che \u0020 è abbastanza buono.

Se avete bisogno di spazio per la vista della successiva concatenazione con altre stringhe, quindi è possibile utilizzare la stringa di formattazione approccio di aggiungere argomenti alla definizione stringa:

<string name="error_">Error: %s</string>

Quindi formattare la stringa come:

String message = context.getString(R.string.error_, "Something went wrong")

Non funziona con xml: space = "preserve"

così ho fatto il modo più rapido =>

ho semplicemente aggiunto un +" "+ in cui avevo bisogno ...

String message_all_pairs_found = getString(R.string.Toast_Memory_GameWon_part1)+" "+total_flips+" "+getString(R.string.Toast_Memory_GameWon_part2);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top