Как сохранить пробелы в конце и/или в начале строки?



Я должен объединить эти две строки из моих файлов ресурсов / значений:



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


Я делаю это так :



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


но пробелы в конце первой строки и в начале второй строки
исчезли (когда тост показан)...



Что делать ?



Я думаю, ответ где-то здесь, в этой ссылка на документацию



или это что-то вроде, используя &amp ; для символа"&"??

651   15  

15 ответов:

даже если вы используете форматирование строк, иногда вам все еще нужно, пробелы в начале или конце строки. Для этих случаев ни один побег с \, ни

я столкнулся с такой же проблемой. Я хотел оставить пустое место в конце строки ресурса, представляющей имя поля на экране.

Я нашел решение по этому вопросу отчет:https://github.com/iBotPeaches/Apktool/issues/124

Это та же самая идея, которую предлагает Дуэсси. Вставить \u0020 непосредственно в XML для пустого вы хотели бы сохранить.

пример :

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

замена производится во время сборки, поэтому это не повлияет на производительность вашей игры.

этой документация предлагает цитировать будет работать:

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

Я просто использую код UTF для пробела "\u0020 " в строках.XML-файл.

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

работает отлично. (Android любит UTF коды)

Если вы действительно хотите сделать это так, как вы делали, то я думаю, что вы должны сказать ему, что пробелы имеют значение, избегая его:

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

однако, я бы использовал строка форматирования для этого. Что-то вроде следующего:

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

затем

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

есть возможность пространства с разной шириной:

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

/ пространство / тонкое пространство / пространство для волос / нет пространства/

визуализация:

enter image description here

использовать "" со строковым значением ресурса.

пример : "значение с пробелами"

или

используйте \ u0020 код для пробелов.

работает хорошо Я использую \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 file

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

скриншот вот изображение, показывающее работу этого кода

этот вопрос может быть старым, но на данный момент самый простой способ сделать это, чтобы добавить кавычки. Например:

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

все ответы здесь не работает для меня. Вместо того, чтобы добавить пробел в конце строки XML Я сделал это

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

аргумент может быть сделан для добавления пространства программно. Поскольку эти случаи будут часто использоваться в конкатенации, я решил остановить это безумие и просто сделать старый + " " +. Это будет иметь смысл в большинство европейские языки, я бы сказал.

это может фактически не ответить на вопрос (Как сохранить пробелы в XML), но это может решить основную проблему более изящно.

вместо того, чтобы полагаться только на ресурсы XML, объедините с помощью строк формата. Поэтому сначала удалите пробелы

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

а затем построить свою строку по-другому:

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

Если вам нужно пространство для последующего объединения его с другими строками, то вы можете использовать подход форматирования строк добавления аргументов в определение строки:

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

затем отформатируйте строку как:

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

Я понятия не имею об Android в частности, но это похоже на обычную обработку пробелов XML - ведущие и конечные пробелы внутри элемента обычно считаются незначительными и удаляются. Попробуй 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>

он не работает с xml: space= "сохранить"

поэтому я сделал это самым быстрым способом =>

Я просто добавил + "" + Там, где мне это было нужно ...

String message_all_pairs_found = getString(R.string.Toast_Memory_GameWon_part1)+" "+total_flips+" "+getString(R.string.Toast_Memory_GameWon_part2);

Comments

    Ничего не найдено.