Wie am Ende der Räume zu halten und / oder zu Beginn eines Strings?
-
22-09-2019 - |
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 & ;
für das Zeichen "&" ??
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  
für ein Leerzeichen verwenden.
Verwenden  
für unzerbrechliches Leerzeichen.
Verwenden  
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>
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);