Jak zachować spacje na końcu i / lub na początku łańcucha?
Muszę połączyć te dwa łańcuchy 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 ciągu i na początku drugiego ciągu zniknęły (kiedy toast jest pokazany) ...
Co mam zrobić ?Myślę, że odpowiedź jest gdzieś tutaj w tym link do dokumentacji
Czy jest to coś w rodzaju używania & ;
dla postaci"&"??
15 answers
Nawet jeśli używasz formatowania łańcuchów, czasami nadal potrzebujesz białych spacji na początku lub końcu łańcucha. W takich przypadkach nie pomaga ani Ucieczka z \
, ani xml:space
atrybut. Musisz użyć encji HTML  
dla spacji.
Użyj  
dla niełamliwych białych znaków.
Użyj  
dla regularnej przestrzeni.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-27 02:37:34
Natknąłem się na ten sam problem. Chciałem zostawić puste na końcu łańcucha zasobów reprezentującego nazwę pola na ekranie.
Znalazłem rozwiązanie tego raportu: https://github.com/iBotPeaches/Apktool/issues/124
To jest ten sam pomysł, który sugeruje Duessi. Wstaw\u0020
bezpośrednio w XML dla pustego pola, które chcesz zachować.
Przykład:
<string name="your_id">Score :\u0020</string>
Wymiana odbywa się w czasie budowy, dlatego nie wpłynie to na wydajność Twoja gra.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-04 13:41:32
Ta Dokumentacja sugeruje, że cytowanie zadziała:
<string name="my_str_spaces">" Before and after? "</string>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-08 11:48:01
Używam tylko kodu UTF dla spacji "\u0020"w łańcuchach.plik xml.
<string name="some_string">\u0020The name of my string.\u0020\u0020</string>
Działa świetnie. (Android uwielbia kody UTF)Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-24 06:24:35
Jeśli naprawdę chcesz zrobić to tak, jak robiłeś, to myślę, że musisz powiedzieć, że biała spacja jest istotna, uciekając od niej:
<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on\ </string>
<string name="Toast_Memory_GameWon_part2">\ flips !</string>
Jednak użyłbym do tego formatowania łańcuchów. Coś w stylu:
<string name="Toast_Memory_GameWon">you found ALL PAIRS ! on %d flips !</string>
Then
String message_all_pairs_found = String.format(getString(R.string.Toast_Memory_GameWon), total_flips);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-19 20:22:19
Istnieje możliwość spacji o różnej szerokości:
<string name="space_demo">| | | ||</string>
| SPACE / THIN SPACE / HAIR SPACE / no space /
Wizualizacja:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-14 15:52:04
Użyj "" z łańcuchem wartości zasobu.
Przykład : "wartość ze spacjami"
LUB
Użyj kodu \u0020 dla spacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-08 12:48:16
Działa dobrze Używam \u0020
<string name="hi"> Hi \u0020 </string>
<string name="ten"> \u0020 out of 10 </string>
<string name="youHaveScored">\u0020 you have Scored \u0020</string>
Plik Java
String finalScore = getString(R.string.hi) +name+ getString(R.string.youHaveScored)+score+ getString(R.string.ten);
Toast.makeText(getApplicationContext(),finalScore,Toast.LENGTH_LONG).show();
zrzut ekranu tutaj obraz pokazujący działanie tego kodu
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-14 17:05:31
To pytanie może być stare, ale na razie najprostszym sposobem na to jest dodanie cudzysłowów. Na przykład:
<string name="Toast_Memory_GameWon_part1">"you found ALL PAIRS ! on "</string>
<string name="Toast_Memory_GameWon_part2">" flips !"</string>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-21 03:28:05
Wszystkie odpowiedzi tutaj nie działają dla mnie. Zamiast tego, aby dodać spację na końcu łańcucha w XML
zrobiłem to
<string name="more_store">more store<b> </b> </string>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-23 04:45:56
Można podać argument dodawania przestrzeni programowo. Ponieważ te przypadki będą często wykorzystywane w konkatenacjach, postanowiłem zatrzymać szaleństwo i po prostu zrobić stare + " " +
. Będą one miały sens w większości języków europejskich, jak sądzę.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-11 16:33:41
Może to nie odpowiedzieć na pytanie (jak zachować białe spacje w XML), ale może rozwiązać podstawowy problem bardziej wdzięcznie.
Zamiast polegać tylko na zasobach XML, Połącz za pomocą ciągów formatujących. Więc najpierw usuń spacje
<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on</string>
<string name="Toast_Memory_GameWon_part2">flips !</string>
A następnie zbuduj swój ciąg inaczej:
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();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-29 09:58:38
Jeśli potrzebujesz spacji w celu późniejszego połączenia jej z innymi łańcuchami, możesz użyć metody formatowania łańcuchów, polegającej na dodaniu argumentów do definicji łańcuchów:
<string name="error_">Error: %s</string>
Następnie sformatuj łańcuch jako:
String message = context.getString(R.string.error_, "Something went wrong")
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-25 02:39:21
Nie mam pojęcia o Androidzie w szczególności, ale wygląda to na zwykłą obsługę XML whitespace - początkowe i końcowe białe spacje w elemencie są ogólnie uważane za nieistotne i usuwane. Try 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>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-19 05:18:31
Nie działa z xml: space= "preserve"
Więc zrobiłem to najszybciej = >
Po prostu dodałem + "" + tam, gdzie tego potrzebowałem ...
String message_all_pairs_found = getString(R.string.Toast_Memory_GameWon_part1)+" "+total_flips+" "+getString(R.string.Toast_Memory_GameWon_part2);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-19 05:45:30