2013-04-17 7 views
6

vorrei formattare un array di stringhe come android used to format strings:Formattare un array di stringhe con argomenti

Di solito lo facciamo:

  • strings.xml

    <string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string> 
    
  • In qualche codice java:

    Resources res = getResources(); 
    String text = String.format(res.getString(R.string.welcome_messages), username, mailCount); 
    

Sto cercando qualcosa di simile:

  • in qualche xml arbitrario:

    <string-array name="employee"> 
         <item>name: %1$s</item> 
         <item>post: %2$s</item> 
        </string-array> 
    
  • in qualche codice Java:

    Resources res = getResources(); 
    String[] employee = ArrayString.format(res.getStringArray(R.string.employee), name, post); 
    

C'è un modo elegante per farlo?

EDIT:

I prossimi pezzi di codice è una soluzione e sto postando solo per aiutare @Sufian, che ha chiesto in un commento. Non è una vera risposta una volta che la mia domanda riguarda la formattazione del contenuto dell'array di stringhe e il codice a soffietto sta formattando ogni stringa separatamente.

In alcuni misc.xml:

<string-array 
    name="string_array"> 
    <item>1st position: %1$d</item> 
    <item>2nd position: %1$d</item> 
</string-array> 

Poi, nel codice Java:

res = getResources(); 
String[] sa = res.getStringArray(R.array.string_array); 
for (int i = 0; i < sa.length; i++) { 
    text += String.format(sa[i], i); 
} 
+0

Allora, come hai fatto a risolverlo? Ho un problema simile. – Sufian

+0

Sembra che non ci sia un modo elegante per eseguire tale formattazione. Sarà necessario iterare in ciascun elemento dell'array di stringhe e formattarlo come necessario. –

+0

Hmm. Qualche esempio potresti condividere? Per ora sto solo selezionando Stringhe per nome usando il seguente frammento di codice e fornendo argomenti di formattazione come con le stringhe di risorse semplici. http://steven.bitsetters.com/2007/11/27/accessing-android-resources-by-name-at-runtime/ – Sufian

risposta

0

getQuantityString potrebbe risolvere il problema.

Guarda le stringhe di quantità in http://developer.android.com/guide/topics/resources/string-resource.html

Ecco la specifica documentazione delle API: http://developer.android.com/reference/android/content/res/Resources.html#getQuantityString(int,%20int,%20java.lang.Object...)

+1

Le stringhe di quantità @Chuck_Norris selezionano effettivamente un tipo di formattazione in un insieme di molte possibilità basate sulla quantità come zero, pochi, molti ... Ho bisogno di usare l'intera stringa dell'array e ogni posizione dell'array può essere una stringa formattata con argomenti . –