Frage

Ich habe diese beiden Strings aus meiner Ressource / Wert-Dateien 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 aus:

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 des ersten Strings und zu Beginn des zweiten Strings verschwunden ist (wenn der Toast gezeigt) ...

Was soll ich tun?

Ich denke, die Antwort irgendwo hier in dieser Dokumentation Link

oder ist es so etwas wie mit &amp ; für das Zeichen "&" ??

War es hilfreich?

Lösung

Auch wenn Sie Zeichenfolge verwenden Formatierung, manchmal braucht man noch weiß Leerzeichen am Anfang oder das Ende der Zeichenfolge. Für diese Fälle weder Flucht mit \, noch xml:space Attribut hilft. Sie müssen HTML-Entität &#160; für ein Leerzeichen verwenden.

Verwenden &#160; für unzerbrechliches Leerzeichen.
Verwenden &#032; für regelmäßigen Raum.

Andere Tipps

Ich lief in das gleiche Problem. Ich wollte ein Leerzeichen am Ende einer Ressourcenzeichenfolge verlassen was einen auf dem Bildschirm angezeigten Feldnamen an.

fand ich eine Lösung in dieser Frage Bericht: https://github.com/iBotPeaches/Apktool / issues / 124

Dies ist die gleiche Idee, dass Duessi vermuten läßt. Legen Sie \u0020 direkt im XML für eine leere möchten Sie erhalten.

Beispiel:

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

Der Austausch bei der Erstellung erfolgt, deshalb wird es nicht die Leistung Ihres Spiels beeinflussen.

Die Dokumentation arbeiten schlägt zitieren:

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

Ich habe gerade den UTF-Code für Raum verwenden "\ u0020" in der strings.xml Datei.

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

funktioniert super. (Android liebt UTF-Codes)

Diese Frage kann alt sein, aber schon jetzt der einfachste Weg, es zu tun ist, Anführungszeichen hinzuzufügen. Zum Beispiel:

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

Es ist möglich, in dem Weltraum mit unterschiedlichen Breiten:

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

| SPACE | THIN SPACE | HAIR SPACE | kein Raum |

Visualisierung:

Wenn Sie wirklich wollen, dass es die Art und Weise tun Sie dann taten, ich glaube, Sie davon zu erzählen haben, dass die Leerzeichen durch austretendes es relevant ist:

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

Allerdings würde ich verwenden string für diese Formatierung . Etwas wie folgt aus:

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

dann

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

use "" mit dem String Ressourcenwert.

Beispiel:    "Wert mit Leerzeichen"

oder

Verwendung \ u0020 Code für Räume.

Arbeits gut Ich verwende \ u0020

<string name="hi"> Hi \u0020 </string>
<string name="ten"> \u0020 out of 10  </string>
<string name="youHaveScored">\u0020 you have Scored \u0020</string>

Java-Datei

String finalScore = getString(R.string.hi) +name+ getString(R.string.youHaveScored)+score+ getString(R.string.ten);
               Toast.makeText(getApplicationContext(),finalScore,Toast.LENGTH_LONG).show();

Bildschirm hier Bild von Anzeigen Arbeiten dieses Codes

Alle Antworten hier nicht für mich arbeiten. Stattdessen ein Leerzeichen am Ende einer Zeichenkette in XML hinzufügen Ich habe diese

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

Ein Argument kann für das Hinzufügen des Raumes programmatisch vorgenommen werden. Da diese Fälle werden oft in Verkettungen verwendet werden, entschied ich mich, den Wahnsinn zu stoppen und nur den alten + " " + zu tun. Diese werden sinnvoll in die meisten europäischen Sprachen, ich würde sammeln.

habe ich keine Ahnung von Android insbesondere, aber das sieht aus wie die üblichen XML-Verarbeitung von Leerzeichen - führenden und Leerzeichen innerhalb eines Elements nachlauf wird allgemein unbedeutend und entfernt betrachtet. Versuchen Sie 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>

Das kann eigentlich nicht die Frage beantworten (Wie Whitespaces in XML zu halten), aber es kann das zugrunde liegende Problem elegante lösen.

Statt nur auf den XML-Ressourcen angewiesen, mit verketten Strings Format. Also zuerst die Leerzeichen entfernen

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

Und dann bauen Sie Ihre Zeichenfolge anders:

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

Es gibt auch die Lösung CDATA zu verwenden. Beispiel:

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

Aber im Allgemeinen denke ich \u0020 ist gut genug.

Wenn Sie den Platz für die Zwecke der später müssen sie mit anderen Strings verketten, dann können Sie die Zeichenfolge Ansatz der Formatierung verwenden Argumente der Zeichenfolge Definition hinzufügen:

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

Dann formatieren Sie die Zeichenfolge wie:

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

Es funktioniert nicht mit xml: space = "preserve"

, damit ich es auf dem schnellsten Weg tat =>

ich einfach ein +“„+ hinzugefügt, wo ich es gebraucht ...

String message_all_pairs_found = getString(R.string.Toast_Memory_GameWon_part1)+" "+total_flips+" "+getString(R.string.Toast_Memory_GameWon_part2);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top