Muszę połączyć te dwa ciągi z moich plików zasobów / wartości:
<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on </string>
<string name="Toast_Memory_GameWon_part2"> flips !</string>
Robię to w ten sposób:
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();
Ale spacje na końcu pierwszego łańcucha i na początku drugiego łańcucha zniknęły (gdy pojawia się Toast) ...
Co powinienem zrobić ?
Wydaje mi się, że odpowiedź znajduje się gdzieś w tym linku do dokumentacji
czy jest to coś w rodzaju użycia & ;
znaku „&”?
android
string-concatenation
Hubert
źródło
źródło
Odpowiedzi:
Nawet jeśli używasz formatowania łańcucha, czasem nadal potrzebujesz białych znaków na początku lub na końcu łańcucha. W tych przypadkach ani pomoc
\
, anixml:space
atrybut nie pomaga. Należy użyć encji HTML 
jako spacji.Użyj
 
do nierozerwalnego białego znaku.Użyj
 
dla zwykłego miejsca.źródło
 
i nie dostałem błędu kompilacji, ale moje miejsce było nadal ignorowane. 
działało, ale nie chcę nierozerwalnego białego znaku. Chcę tylko zwykłej przestrzeni.\u0020
pracowałNatrafiłem na ten sam problem. Chciałem pozostawić puste miejsce na końcu łańcucha zasobów reprezentującego nazwę pola na ekranie.
Znalazłem rozwiązanie tego raportu o problemie: https://github.com/iBotPeaches/Apktool/issues/124
To ten sam pomysł, który sugeruje Duessi. Wstaw
\u0020
bezpośrednio do pliku XML puste miejsce, które chcesz zachować.Przykład:
Wymiana odbywa się w czasie kompilacji, dlatego nie wpłynie to na wydajność twojej gry.
źródło
\u0020
to SPACJA kodu ASCII. To był najlepszy wybór dla mojego projektu, ponieważ musiałem się upewnić, że to ASCII.Ta dokumentacja sugeruje, że cytowanie będzie działać:
źródło
<string name="my_str_spaces">" Before <b>and</b> after? "</string>
Enclose the entire string in double quotes ("This'll work", for example)
gdzie omawia ucieczkęSingle quote (')
.Po prostu używam kodu UTF dla miejsca „\ u0020” w pliku strings.xml.
działa świetnie. (Android uwielbia kody UTF)
źródło
To pytanie może być stare, ale jak na razie najłatwiej to zrobić, dodając znaki cudzysłowu. Na przykład:
źródło
Istnieje możliwość spacji o różnych szerokościach:
| PRZESTRZEŃ | CIENKA PRZESTRZEŃ | PRZESTRZEŃ DO WŁOSÓW | brak miejsca |
Wyobrażanie sobie:
źródło
Jeśli naprawdę chcesz to zrobić tak, jak robiłeś to myślę, że musisz powiedzieć, że spacja jest istotna, unikając jej:
Jednak użyłbym do tego formatowania ciągów . Coś w stylu:
następnie
źródło
String.format
powoduje wiele przydziałów pamięci, które są niepożądane w grze.użyj „” z wartością zasobu ciągu.
Przykład: „wartość ze spacjami”
LUB
użyj spacji dla kodu.
źródło
Pracuję dobrze Używam \ u0020
Plik Java
Zrzut ekranu tutaj Obraz przedstawiający działanie tego kodu
źródło
Można argumentować za programowym dodaniem spacji. Ponieważ te przypadki będą często używane w konkatenacjach, postanowiłem zatrzymać szaleństwo i po prostu zrobić stare
+ " " +
. Zrozumiałbym, że będą one miały sens w większości języków europejskich.źródło
Wszystkie odpowiedzi tutaj nie działały dla mnie. Zamiast tego, aby dodać spację na końcu łańcucha,
XML
zrobiłem toźródło
W szczególności nie mam pojęcia o Androidzie, ale wygląda to jak zwykła obsługa białych znaków XML - wiodące i końcowe białe znaki w elemencie są ogólnie uważane za nieistotne i usuwane. Spróbuj
xml:space
:źródło
xml:space
wydaje się być ignorowany.To może nie odpowiedzieć na pytanie (Jak zachować białe znaki w XML), ale może rozwiązać problem leżący u podstaw z wdziękiem.
Zamiast polegać tylko na zasobach XML, konkatenuj przy użyciu ciągów formatu. Najpierw usuń białe spacje
A następnie zbuduj swój łańcuch inaczej:
źródło
Istnieje również rozwiązanie polegające na użyciu
CDATA
. Przykład:Ale ogólnie uważam, że
\u0020
jest wystarczająco dobry.źródło
Jeśli potrzebujesz miejsca do późniejszego powiązania go z innymi łańcuchami, możesz użyć metody formatowania łańcucha, dodając argumenty do definicji łańcucha:
Następnie w celu sformatowania ciągu (np. Jeśli serwer zwrócił błąd, w przeciwnym razie użyj
getString(R.string.string_resource_example)
):Co skutkuje w:
źródło
Nie działa z xml: space = "preserve"
więc zrobiłem to najszybciej = =
Po prostu dodałem + „” + tam, gdzie go potrzebowałem ...
źródło