Ich muss diese beiden Zeichenfolgen aus meinen Ressourcen- / Wertedateien verketten:
<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on </string>
<string name="Toast_Memory_GameWon_part2"> flips !</string>
Ich mache es so:
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();
Aber die Leerzeichen am Ende der ersten Zeichenfolge und am Anfang der zweiten Zeichenfolge sind verschwunden (wenn der Toast angezeigt wird) ...
Was sollte ich tun ?
Ich denke, die Antwort ist irgendwo hier in diesem Dokumentationslink
oder ist es so etwas wie & ;
für das "&" Zeichen zu verwenden?
android
string-concatenation
Hubert
quelle
quelle
Antworten:
Selbst wenn Sie die Zeichenfolgenformatierung verwenden, benötigen Sie manchmal noch Leerzeichen am Anfang oder Ende Ihrer Zeichenfolge. In diesen Fällen hilft weder das Entkommen mit
\
noch dasxml:space
Attribut. Sie müssen eine HTML-Entität 
für ein Leerzeichen verwenden.Verwendung
 
für nicht zerbrechliche Leerzeichen.Verwenden Sie
 
für regelmäßigen Raum.quelle
 
, und ich habe keinen Build-Fehler erhalten, aber mein Speicherplatz wurde immer noch ignoriert. 
hat funktioniert, aber ich möchte kein nicht zerbrechliches Leerzeichen. Ich möchte nur einen regulären Raum.\u0020
hat funktioniert.Ich bin auf das gleiche Problem gestoßen. Ich wollte am Ende einer Ressourcenzeichenfolge, die einen Feldnamen auf dem Bildschirm darstellt, ein Leerzeichen lassen.
Ich habe eine Lösung für diesen Problembericht gefunden: https://github.com/iBotPeaches/Apktool/issues/124
Dies ist die gleiche Idee, die Duessi vorschlägt. Fügen Sie
\u0020
direkt in das XML ein Leerzeichen ein, das Sie beibehalten möchten.Beispiel:
Der Austausch erfolgt zum Zeitpunkt der Erstellung, daher wird die Leistung Ihres Spiels nicht beeinträchtigt.
quelle
\u0020
ist SPACE des ASCII-Codes. Dies war die beste Wahl für mein Projekt, da ich sicherstellen musste, dass es ASCII war.Diese Dokumentation schlägt vor, dass das Zitieren funktioniert:
quelle
<string name="my_str_spaces">" Before <b>and</b> after? "</string>
Enclose the entire string in double quotes ("This'll work", for example)
wo es darum geht, einem zu entkommenSingle quote (')
.Ich verwende nur den UTF-Code für das Leerzeichen "\ u0020" in der Datei strings.xml.
funktioniert super. (Android liebt UTF-Codes)
quelle
Diese Frage mag alt sein, aber der einfachste Weg, dies zu tun, ist das Hinzufügen von Anführungszeichen. Zum Beispiel:
quelle
Es ist möglich, mit unterschiedlichen Breiten zu platzieren:
| RAUM | DÜNNER RAUM | HAARRAUM | kein Leerzeichen |
Visualisierung:
quelle
Wenn du es wirklich so machen willst, wie du es gemacht hast, dann musst du es sagen, dass das Leerzeichen relevant ist, indem du ihm entkommst:
Ich würde hierfür jedoch die Zeichenfolgenformatierung verwenden . So etwas wie das Folgende:
dann
quelle
String.format
viele Speicherzuordnungen verursacht , die in einem Spiel unerwünscht sind.Verwenden Sie "" mit dem Zeichenfolgenressourcenwert.
Beispiel: "Wert mit Leerzeichen"
ODER
Verwenden Sie den Code \ u0020 für Leerzeichen.
quelle
Funktioniert gut Ich benutze \ u0020
Java-Datei
Screenshot hier Bild der Anzeige der Funktionsweise dieses Codes
quelle
Es kann ein Argument für das programmgesteuerte Hinzufügen des Leerzeichens angeführt werden. Da diese Fälle häufig in Verkettungen verwendet werden, habe ich beschlossen, den Wahnsinn zu stoppen und nur das Alte zu tun
+ " " +
. Diese werden in den meisten europäischen Sprachen Sinn machen , würde ich zusammenfassen.quelle
Alle Antworten hier haben bei mir nicht funktioniert. Stattdessen habe
XML
ich dies getan , um ein Leerzeichen am Ende eines Strings in hinzuzufügenquelle
Ich habe keine Ahnung von Android, aber dies sieht aus wie die übliche Behandlung von XML-Leerzeichen - führende und nachfolgende Leerzeichen innerhalb eines Elements werden im Allgemeinen als unbedeutend angesehen und entfernt. Versuchen Sie
xml:space
:quelle
xml:space
ignoriert zu werden.Dies beantwortet möglicherweise nicht die Frage (wie Whitespaces in XML gehalten werden), löst jedoch möglicherweise das zugrunde liegende Problem eleganter.
Anstatt sich nur auf die XML-Ressourcen zu verlassen, verketten Sie mit Formatzeichenfolgen. Entfernen Sie also zuerst die Leerzeichen
Und dann bauen Sie Ihren String anders:
quelle
Es gibt auch die Lösung der Verwendung
CDATA
. Beispiel:Aber im Allgemeinen finde ich
\u0020
das gut genug.quelle
Wenn Sie den Speicherplatz benötigen, um ihn später mit anderen Zeichenfolgen zu verketten, können Sie den Ansatz zur Zeichenfolgenformatierung verwenden, um Ihrer Zeichenfolgendefinition Argumente hinzuzufügen:
Dann für das Formatieren der Zeichenfolge (z. B. wenn Sie einen vom Server zurückgegebenen Fehler haben, andernfalls verwenden
getString(R.string.string_resource_example)
):Was in ... resultiert:
quelle
Es funktioniert nicht mit xml: space = "bewahren"
also habe ich es am schnellsten gemacht =>
Ich habe einfach ein + "" + hinzugefügt, wo ich es brauchte ...
quelle