Pregunta

Tengo para concatenar estas dos cadenas de mis archivos de recursos / valor:

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

lo hago de esta manera:

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

Sin embargo, los espacios al final de la primera secuencia y al comienzo de la segunda cadena han desaparecido (cuando se muestra la tostada) ...

¿Qué debo hacer?

Creo que la respuesta está en algún lugar aquí en este documentación enlace

o se trata de algo así como el uso de &amp ; para el carácter "&" ??

¿Fue útil?

Solución

Incluso si se utiliza el formato de cadenas, a veces todavía necesita espacios en blanco al principio o al final de la cadena. Para estos casos, ni escapar con \, ni atributo xml:space ayuda. Debe utilizar HTML entidad &#160; por un espacio en blanco.

El uso de espacios en blanco &#160; irrompible.
Uso &#032; para el espacio regular.

Otros consejos

me encontré con el mismo problema. Yo quería dejar un espacio en blanco al final de una cadena de recursos que representa un nombre de campo en la pantalla.

He encontrado una solución en este informe emisión: https://github.com/iBotPeaches/Apktool / temas / 124

Esta es la misma idea que sugiere Duessi. Insertar \u0020 directamente en el XML para un espacio en blanco que desea conservar.

Ejemplo:

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

La sustitución se realiza en tiempo de compilación, por lo que no afectará el rendimiento del juego.

documentación sugiere citar funcionará:

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

sólo tiene que utilizar el código UTF para el espacio "\ u0020" en el archivo strings.xml.

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

funciona muy bien. (Android ama códigos UTF)

Esta pregunta puede ser viejo, pero a partir de ahora la forma más fácil de hacerlo es agregar comillas. Por ejemplo:

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

No es posible el espacio con diferentes anchos:

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

| ESPACIO | THIN ESPACIO | HAIR ESPACIO | no hay espacio |

Visualización:

introducir descripción de la imagen aquí

Si realmente quiere hacerlo de la manera que estaba haciendo entonces yo creo que hay que decirle que el espacio en blanco es relevante escapándolo:

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

Sin embargo, yo usaría formato de cadenas para esto. Algo parecido a lo siguiente:

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

entonces

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

uso "" con el valor de recurso de cadena.

Ejemplo:    "Valor con espacios"

o

El uso de código \ u0020 para espacios.

Trabajo también Estoy 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>

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

Captura aquí Mostrando Imagen de Trabajo de este código

Todas las respuestas aquí no funcionó para mí. En su lugar, añadir un espacio al final de una cadena en XML Hice esto

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

Un argumento se puede hacer para añadir el espacio mediante programación. Dado que estos casos se utilizan a menudo en concatenaciones, decidí parar la locura y acaba de hacer el viejo + " " +. Estos tendrán sentido en la mayoría de los idiomas europeos, me gustaría reunirse.

No tengo ni idea acerca de Android en particular, pero esto se ve como el XML habitual espacio en blanco manipulación - espacio inicial y final dentro de un elemento generalmente se considera insignificante y se retira. Trate 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>

Esta realidad no puede responder a la pregunta (¿Cómo mantener los espacios en blanco en XML) pero puede resolver el problema de fondo con más gracia.

En lugar de confiar únicamente en los recursos XML, usando concatenar las cadenas de formato. Así que quitar primero los espacios en blanco

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

Y luego construir la cadena de manera diferente:

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

También existe la solución de utilizar CDATA. Ejemplo:

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

Pero en general creo \u0020 es lo suficientemente bueno.

Si usted necesita el espacio con el fin de concatenar más adelante con otras cadenas, entonces usted puede utilizar la cadena enfoque de añadir argumentos a su definición de formato de cadenas:

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

A continuación, dar formato a la cadena como:

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

no funciona con xml: espacio = "preservar"

así que hice de la manera más rápida =>

Simplemente añade a +" "+ cuando lo necesitaba ...

String message_all_pairs_found = getString(R.string.Toast_Memory_GameWon_part1)+" "+total_flips+" "+getString(R.string.Toast_Memory_GameWon_part2);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top