Как сохранить пробелы в конце и/или в начале строки?
Я должен объединить эти две строки из моих файлов ресурсов / значений:
<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();
но пробелы в конце первой строки и в начале второй строки исчезли (когда тост показан)...
Что делать ?
Я думаю, ответ где-то здесь, в этой ссылка на документацию
или это что-то вроде, используя & ;
для персонажа"&"??
15 ответов
даже если вы используете форматирование строк, иногда вам все еще нужно, пробелы в начале или конце строки. Для этих случаев ни побег с \
, nor
я столкнулся с такой же проблемой. Я хотел оставить пробел в конце строки ресурса, представляющей имя поля на экране.
Я нашел решение по этому вопросу отчета:https://github.com/iBotPeaches/Apktool/issues/124
Это та же идея, которую предлагает Duessi. Вставить \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">| | | ||</string>
| место | тонкие пространства | волос место | нет места |
визуализация:
использовать "" со строковым значением ресурса.
пример : "значение с пробелами"
или
используйте код \ 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 файл
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 - ведущих и конечных пробелов в элементе, как правило, считается незначительным и удаляется. Попробуй!--1-->:
<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= "preserve"
поэтому я сделал это самым быстрым способом =>
Я просто добавил + "" + Там, где мне это было нужно ...
String message_all_pairs_found = getString(R.string.Toast_Memory_GameWon_part1)+" "+total_flips+" "+getString(R.string.Toast_Memory_GameWon_part2);