#android #string #concatenation #string-concatenation
#Android #строка #объединение #строка-конкатенация
Вопрос:
Это действительно глупые вопросы, но я не могу заставить это работать. Я использовал опцию поиска, но не смог не найти свой ответ для Android.
Что я хотел бы сделать, это следующее:
В res/strings.xml у меня есть несколько ниточек
<string name="good0">blablabla</string>
<string name="good1">balablabla2</string>
etc
Я хочу показывать эти строки случайным образом в тех, когда что-то происходит:
Toast.makeText(this,R.string.good (Math.random()*10), Toast.LENGTH_LONG).show();
Но это не работает.
Большое спасибо за вашу помощь!
Комментарии:
1. Почему бы вам не использовать stringArray вместо этого? Это невозможно сделать!
2. Я выберу stringArray, я думаю, что это лучшее решение, чем использование case. Спасибо за ваш ответ!
Ответ №1:
Используйте String Array
.
В strings.xml
:
<resources>
<string-array name="messages">
<item>blablabla</item>
<item>blablabla</item>
</string-array>
</resources>
Тогда в коде у вас будет что-то вроде:
String[] messages = getResources().getStringArray(R.array.messages);
Random r = new Random();
String message = messages[r.nextInt(messages.length)];
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
Ответ №2:
R.string.good
является int
, потому что оно ссылается на ресурс. Этот int ИДЕНТИФИЦИРУЕТ строку в XML-файле. Android предоставляет getString()
для своих идентификаторов ресурсов.
Документы Android о строковых ресурсах
Вам нужно будет извлечь строку из файла ресурсов таким образом, затем выполнить конкатенацию в обычном режиме.
Ответ №3:
Вы не можете этого сделать.
Вам придется использовать switch
блок.
String myString;
switch(Math.random() * 10) {
case 0:
myString = getString(R.string.good1);
break;
}
Toast.makeText(this, myString, Toast.LENGTH_LONG).show();
Комментарии:
1. Не ожидал, что это невозможно. Но большое спасибо за ваш ответ!
2. R.string.good1 просто добавит значение int в строку. Это не сработает без использования соответствующего
getString()
вызова.3. Я не думаю, что это хорошая идея, особенно когда строк много.
Ответ №4:
Если у вас есть несколько строковых значений или целых значений и вы хотите сохранить их в одной строке, то String Builder лучше всего подходит для такого типа операций, например, у вас есть массив строк, и вы хотите сохранить в одной строке, а затем отобразить эту строку, тогда используйте этот метод. это будет работать на сто процентов, и это слишком подходит для такого типа проблем.**
String my_str=null;
StringBuilder bldr=new StringBuilder();
for(int j=0;j<5;j )
bldr.append(phonearray[j]).append(",");
my_str=bldr.toString();
здесь, в этом случае, я присваиваю массив phone одной строке и
затем я покажу это и т.д…