He cadenas definidas en el habitual strings.xml archivo de Recursos como este:

<string name="hello_world"> HELLO</string>

Es posible la definición de las cadenas de formato como el de abajo

 result_str = String.format("Amount: %.2f  for %d days ",  var1, var2);

en el strings.xml archivo de recursos?

Traté de escapar los caracteres especiales, pero no su trabajo.

  • Puede probar en la siguiente forma: mTextView.setText(String.format(«Resultado: «+»%1$s», se ejecuta)); donde int carreras = 100;
InformationsquelleAutor CocoNess | 2012-09-27

4 Comentarios

  1. 221

    Usted no necesita usar formatted="false" en el XML. Usted sólo tiene que utilizar completamente calificado de la cadena de formato mp – %[POSITION]$[TYPE] (donde [POSITION] es el atributo de posición y [TYPE] es el tipo de variable), en lugar de la corta versiones, por ejemplo %s o %d.

    Cita de Android Docs: Cadena de Formato y Estilo:

    <string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>

    En este ejemplo, la cadena de formato tiene dos argumentos: %1$s es un
    cadena y %2$d es un entero decimal. Puede dar formato a la cadena con
    los argumentos de su aplicación como esta:

    Resources res = getResources();
    String text = res.getString(R.string.welcome_messages, username, mailCount);
    • Puedo conseguir java.util.IllegalFormatConversionException: %d no puedo formato java.lang.Doble argumentos cuando yo uso $d pensar $d es un entero
    • Aquí está una lista de todos los diferentes conversores, tendrás que elegir el más apropiado para el tipo de número de teléfono, usted puede necesitar %f (de punto flotante): docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html
    • res.getString(R. string.welcome_messages, nombre de usuario, mailCount) hará el trabajo. El método getString de recursos/contexto incluye la funcionalidad de formato.
  2. 99

    Debe agregar formatted="false" para su cadena de recursos


    Aquí es un ejemplo

    En su strings.xml :

    <string name="all" formatted="false">Amount: %.2f%n  for %d days</string>

    En el código:

    yourTextView.setText(String.format(getString(R.string.all), 3.12, 2));
    • No es necesario de acuerdo a la documentación de las cadenas de Formato. developer.android.com/guide/topics/resources/…
    • Que es una forma de corregir, pero puede ser confuso para algunos, porque formatted="false" podría implicar la cadena no conseguir el formato. Publicado otra solución stackoverflow.com/a/20887690/228429
    • Tenga en cuenta que puede simplificar String.format(getString(R.string.all), 3.12, 2) de esta manera: getString(R.string.all, 3.12, 2).
    • Hay un problema importante con todas las respuestas en esta página: Si necesita agregar un signo de porcentaje a la derecha junto a un parámetro, digamos 25%, Android se bloqueo.
    • Usted puede escapar el signo de porcentaje mediante la inclusión de dos %%. Este siguiente formato estándar de sintaxis. Ejemplo: String.format(«Porcentaje %d%% o el flotador %.2f%%», 12, 12.34 f); generará una cadena de «Porcentaje de 12% o el flotador 12.34%»
    • ¿Cómo solucionar este problema si string.xml está en la biblioteca y no puedo compilar ?
    • Si usted redefinir la cadena en el proyecto, debe ser reemplazado
    • Voy a intentar, pero hay más de 300 cadenas :/

  3. 11

    Dentro del archivo strings.xml definir un recurso de Cadena como esta:

    <string name="string_to_format">Amount: %1$f  for %2$d days%3$s</string>

    Dentro de su código (suponer que se hereda de Contexto), sólo tienes que hacer lo siguiente:

     String formattedString = getString(R.string.string_to_format, floatVar, decimalVar, stringVar);

    (En comparación a la respuesta de LocalPCGuy o Giovanny Farto M. la Cadena.formato de método no es necesario.)

  4. 7

    Cita de Android De Google Docs:

    Si usted necesita para dar formato a sus cadenas mediante String.format(String,
    Object...)
    , entonces usted puede hacerlo por poner el formato de los argumentos en la
    recurso de cadena. Por ejemplo, con los siguientes recursos:

    <string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>

    En este ejemplo, la cadena de formato tiene dos argumentos: %1$s es una cadena
    y %2$d es un número decimal. Puede dar formato a la cadena con argumentos
    a partir de su aplicación como esta:

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

Dejar respuesta

Please enter your comment!
Please enter your name here