Получить строку xml с помощью строки concat в деятельности [duplicate]

Вместо input.nextLine() используйте input.next(), что должно решить проблему.

Измененный код:

public static Scanner input = new Scanner(System.in);

public static void main(String[] args)
{
    System.out.print("Insert a number: ");
    int number = input.nextInt();
    System.out.print("Text1: ");
    String text1 = input.next();
    System.out.print("Text2: ");
    String text2 = input.next();
}
343
задан Rahul Tiwari 13 August 2015 в 13:32
поделиться

8 ответов

Форматирование и стилизация

Да, см. следующее из Строковые ресурсы: форматирование и стилизация

Если вам нужно отформатировать строки, используя String.format(String, Object...), тогда вы можете сделать это, поместив аргументы формата в ресурс строки. Например, со следующим ресурсом:

<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>

В этом примере строка формата имеет два аргумента: %1$s - это строка, а %2$d - десятичное число. Вы можете отформатировать строку с аргументами из вашего приложения следующим образом:

Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);

Основное использование

Обратите внимание, что getString имеет перегрузку, которая использует эту строку как format:

String text = res.getString(R.string.welcome_messages, username, mailCount);

Plurals

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

<plurals name="welcome_messages">
    <item quantity="one">Hello, %1$s! You have a new message.</item>
    <item quantity="other">Hello, %1$s! You have %2$d new messages.</item>
</plurals>

Первый параметр mailCount используется для решить, какой формат использовать (одно или несколько), другими параметрами являются ваши подстановки:

Resources res = getResources();
String text = res.getQuantityString(R.plurals.welcome_messages, mailCount, username, mailCount);

Подробнее см. в String Resources: Plurals .

775
ответ дан MacaronLover 28 August 2018 в 02:25
поделиться

Вы можете использовать MessageFormat

<string name="customer_address">Wellcome: {0} {1}</string>

В коде Java:

String text =MessageFormat(R.string.customer_address).format("Name","Family");

Уровень API 1:

https: / /developer.android.com/reference/java/text/MessageFormat.html

0
ответ дан Ahmad Aghazadeh 28 August 2018 в 02:25
поделиться

в res / values ​​/ string.xml

<resources>
    <string name="app_name">Hello World</string>
    <string name="my_application">Application name: %s, package name: %s</string>
</resources>

в java-коде

String[] args = new String[2];
args[0] = context.getString(R.string.app_name);
args[1] = context.getPackageName();
String textMessage = context.getString(R.string.my_application,(Object[]) args);
0
ответ дан Chanh 28 August 2018 в 02:25
поделиться

Тем не менее, вы также должны прочитать ответ Elias Mårtenson в отношении для множественного использования Android для «нуля» . Существует проблема с интерпретацией определенных значений, таких как «ноль».

2
ответ дан Community 28 August 2018 в 02:25
поделиться

В Kotlin вам просто нужно установить строковое значение следующим образом:

<string name="song_number_and_title">"%1$d ~ %2$s"</string>

Создайте текстовое представление на вашем макете:

<TextView android:id="@+id/song_number_and_title"/>

Затем сделайте это в своем коде если вы используете Anko:

val song = database.use { // get your song from the database }
song_number_and_title.setText(resources.getString(R.string.song_number_and_title, song.number, song.title))  

Возможно, вам придется использовать свои ресурсы из контекста приложения.

0
ответ дан msbodw001 28 August 2018 в 02:25
поделиться

Котлинская версия принятого ответа ...

val res = resources
val text = String.format(res.getString(R.string.welcome_messages), username, mailCount)
0
ответ дан serv-inc 28 August 2018 в 02:25
поделиться

Если вы хотите использовать параметр из фактического файла strings.xml без использования какого-либо кода Java:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE resources [
  <!ENTITY appname "WhereDat">
  <!ENTITY author "Oded">
]>

<resources>
    <string name="app_name">&appname;</string>
    <string name="description">The &appname; app was created by &author;</string>
</resources>

Это не работает в файлах ресурсов, то есть переменные должны быть скопированы в каждый файл XML которые им нужны.

106
ответ дан Suragch 28 August 2018 в 02:25
поделиться

Ищет то же самое и, наконец, нашел следующее очень простое решение. Лучшее: это работает из коробки. 1. измените свой источник строк:

<string name="welcome_messages">Hello, <xliff:g name="name">%s</xliff:g>! You have 
<xliff:g name="count">%d</xliff:g> new messages.</string>

2. использование подстановки строки:

c.getString(R.string.welcome_messages,name,count);

где c - это контекст, name - строковая переменная, а count - ваш int variable

В файле res / strings.xml вам нужно включить

<resources xmlns:xliff="http://schemas.android.com/apk/res-auto">

. Работает на меня. :)

14
ответ дан user3016503 28 August 2018 в 02:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: