Tengo que concatenar estas dos cadenas de mis archivos de recursos / valores:
<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();
Pero los espacios al final de la primera cadena y al comienzo de la segunda cadena han desaparecido (cuando se muestra el Toast) ...
Qué tengo que hacer ?
Supongo que la respuesta está aquí en este enlace de documentación.
¿o es algo así como usar & ;
para el carácter "&"?
android
string-concatenation
Hubert
fuente
fuente
Respuestas:
Incluso si usa el formato de cadena, a veces aún necesita espacios en blanco al principio o al final de su cadena. Para estos casos, ni escapar con
\
, nixml:space
atribuir ayuda. Debe usar la entidad HTML 
para un espacio en blanco.Uso
 
para espacios en blanco no rompibles.Úselo
 
para espacio regular.fuente
 
y no obtuve ningún error de compilación, pero mi espacio aún se ignoró. 
funcionó, pero no quiero un espacio en blanco no rompible. Solo quiero un espacio regular.\u0020
trabajó.Me encontré con el mismo problema. Quería dejar un espacio en blanco al final de una cadena de recursos que representa un nombre de campo en pantalla.
Encontré una solución en este informe de problema: https://github.com/iBotPeaches/Apktool/issues/124
Esta es la misma idea que sugiere Duessi. Inserte
\u0020
directamente en el XML para un espacio en blanco que le gustaría conservar.Ejemplo:
El reemplazo se realiza en el momento de la compilación, por lo tanto, no afectará el rendimiento de su juego.
fuente
\u0020
es ESPACIO del código ASCII. Esta fue la mejor opción para mi proyecto ya que tenía que asegurarme de que fuera ASCII.Esta documentación sugiere que las citas funcionarán:
fuente
<string name="my_str_spaces">" Before <b>and</b> after? "</string>
Enclose the entire string in double quotes ("This'll work", for example)
donde se discute el escape aSingle quote (')
.Solo uso el código UTF para el espacio "\ u0020" en el archivo strings.xml.
Funciona genial. (Android ama los códigos UTF)
fuente
Esta pregunta puede ser antigua, pero a partir de ahora la forma más fácil de hacerlo es agregar comillas. Por ejemplo:
fuente
Es posible espaciar con diferentes anchos:
El | ESPACIO | ESPACIO DELGADO | ESPACIO PARA EL CABELLO | sin espacio |
Visualización:
fuente
Si realmente quieres hacerlo de la manera que lo estabas haciendo, entonces creo que tienes que decirle que el espacio en blanco es relevante escapándolo:
Sin embargo, usaría el formato de cadena para esto. Algo como lo siguiente:
entonces
fuente
String.format
causa muchas asignaciones de memoria que no son deseables en un juego.use "" con el valor del recurso de cadena.
Ejemplo: "valor con espacios"
O
use el código \ u0020 para espacios.
fuente
Trabajando bien, estoy usando \ u0020
Archivo Java
Captura de pantalla aquí Imagen de mostrar el funcionamiento de este código
fuente
Se puede hacer un argumento para agregar el espacio mediante programación. Dado que estos casos se usarán a menudo en concatenaciones, decidí detener la locura y simplemente hacer lo viejo
+ " " +
. Tendría sentido en la mayoría de los idiomas europeos, me daría cuenta.fuente
Todas las respuestas aquí no funcionaron para mí. En cambio, para agregar un espacio al final de una cadena en
XML
hice estofuente
No tengo idea sobre Android en particular, pero esto se parece al manejo habitual de espacios en blanco XML: los espacios en blanco iniciales y finales dentro de un elemento generalmente se consideran insignificantes y se eliminan. Prueba
xml:space
:fuente
xml:space
parece ser ignorado.Es posible que esto realmente no responda la pregunta (Cómo mantener espacios en blanco en XML) pero puede resolver el problema subyacente con más gracia.
En lugar de confiar solo en los recursos XML, concatene utilizando cadenas de formato. Así que primero elimine los espacios en blanco
Y luego construye tu cadena de manera diferente:
fuente
También existe la solución de usar
CDATA
. Ejemplo:Pero en general creo que
\u0020
es lo suficientemente bueno.fuente
Si necesita el espacio para luego concatenarlo con otras cadenas, puede usar el enfoque de formato de cadena para agregar argumentos a su definición de cadena:
Luego, para formatear la cadena (por ejemplo, si el servidor devuelve un error, de lo contrario, use
getString(R.string.string_resource_example)
):Lo que resulta en:
fuente
No funciona con xml: space = "preserve"
así que lo hice de la manera más rápida =>
Simplemente agregué un + "" + donde lo necesitaba ...
fuente