2013-07-06 6 views
8

Ho una stringa come questa:Cosa c'è di sbagliato in questa stringa di formato?

<string name="q_title" formatted="false">Item %d of %d</string> 

lo sto usando in String.Format in questo modo:

String log = String.format(getString(R.string.q_title), 100, 500); 

Finora ho osservato nessun problema con l'uscita.

Tuttavia, l'ispezione del codice in Android Studio mi dà:

formato stringa 'q_title' non è una stringa di formato valida quindi non dovrebbe essere passata a String.Format

Perché?

+0

un'occhiata [qui] (http://developer.android.com/guide/topics/resources/string-resource. html # FormattingAndStyling) – Blackbelt

+0

Cosa succede se si rimuovono i backslash prima delle virgolette doppie? – fge

+1

Potresti aggiornare la tua domanda con la nuova stringa? – Blackbelt

risposta

14

La stringa dovrebbe essere

<string name="q_title" formatted="false">Item %1$d of %2$d</string> 

E il codice

String log = getString(R.string.q_title, 100, 500); 

Quando si hanno più argomenti è necessario contrassegnarli con 1 $, 2 $ ... n $. In arabo lang l'ordine è invertito, quindi hanno bisogno di sapere come cambiarlo correttamente.

getString(id, args...) esegue il formato in sé.

2

Per chi ancora alla ricerca di questa risposta, come dice il link that Blackbelt posted, il formato corretto per la stringa sarebbe:

<string name="q_title">Item %1$d of %2$d</string> 
1

Attenzione a fuggire tutti i caratteri speciali

Ho avuto un problema con questa stringa perché ho dimenticato di sfuggire al carattere di percentuale "%" alla fine.

<string name="market_variation_formatter">%s %</string> 

La buona sfuggito stringa era:

<string name="market_variation_formatter">%s \%</string> 
4

Per cento, i seguenti ha lavorato per me.

<string name="score_percent">%s%%</string> 


getString(R.string.score_percent,"20") 

Se avete a che fare con i numeri interi sostituire s da d

<string name="score_percent">%d%%</string>