Сайт для программистов

понедельник, 4 июля 2016 г.

Пробелы в строковых ресурсах

На моём форуме читатель поделился проблемой, с которой я сам не сталкивался. Оказывается, если в строковых ресурсах строка начинается или заканчивается символом пробела, то пробел обрезается. Чем это чревато? Допустим, мы хотим соединить две строки.


<string name="cat">Моему коту </string>
<string name="catAge">5 лет</string>

String firstMessage = getResources().getString(R.string.cat);
String secondMessage = getResources().getString(R.string.catAge);

mTextView.setText(firstMessage + secondMessage);
Несмотря на пробел после слова коту, на экране мы увидим предложение без пробела. Старайтесь избегать таких вариантов с пробелами, как правило такой надобности нет. Пробел всегда можно вставить в коде программно.

// вставляем пробел между двумя словами
mTextView.setText(firstMessage + " " + secondMessage);
Но если по каким-то причинам, вам нужны именно такие строковые ресурсы с пробелами в начале или в конце слов, то самый простой способ - использовать кавычки.

<string name="cat">"Моему коту "</string>
Можно использовать также управляющие символы или код Unicode для символа пробела. Но вряд ли вы их будете держать в голове. Поэтому просто используйте кавычки и будет вам счастье.