Páginas

Cadenas con parámetros
Parameters in strings

Cuando obtenemos cadenas de texto del fichero string.xml, tenemos una serie de opciones avanzadas, que incluyen la utilización de parámetros.

Un ejemplo clásico es aquél en que la cadena va a mostrar un dato de negocio, como podría ser el nombre del usuario. Puede que alguna vez hayas solucionado este problema sencillamente concatenando la cadena obtenida del fichero xml, con el nombre:

getString(R.string.hello) + Model.user_name;

Esta solución es perfectamente válida, pero no nos valdría si queremos insertar el valor en medio de la cadena. En este caso podemos aprovechar la posibilidad de añadir parámetros. En el fichero string.xml tendríamos una entrada como esta.


<string name="hello">Hola %1$s, bienvenido</string>

Cada parámetro contiene un dígito que sirve como identificador secuencial, y otro que indica su tipo: s - string, d - decimal...

En código podemos completar la cadena con la siguiente línea.

String.format(getString(R.string.hello), Model.user_name);

El método format de la clase String admite tantos parámetros como sean necesarios, por lo que podemos añadir tantos como queramos en la definición del texto.
When we get string from string.xml file, we can use some advanzed options, including using parameters.

For example, if we want to show a business data, like username. A simple solution is to concatenate it with a string from xml file:

getString(R.string.hello) + Model.user_name;

This is a correct solution, but not enough if we want to insert the value in the middle of the chain. In this case we can use the possibility to add parameters. We need an entry like this in the file string.xml.


<string name="hello">Hello %1$s, wellcome</string>

Each parameter has one digit that is used as a sequential identifier, and another one to tell the type: s - string, d - decimal...

In our code, we can complete the string with the next line.

String.format(getString(R.string.hello), Model.user_name);

Format method on class String can receive as many parameters as needed, so we can add all we need.

No hay comentarios:

Publicar un comentario