Суффиксы для строк

#java #string

#java #строка

Вопрос:

Как мне добавить что-то в конец строки, например целое число?

Пример:

 int i = 0;
String string = Integer.toString(i);
string = string   suffix;
 

Я попытался использовать знак плюс для добавления суффикса, но это не сработало. Любая помощь?

Комментарии:

1. Чему равно значение suffix ? Каким был результат при выполнении кода? Чего вы ожидали? Пожалуйста, помогите нам помочь вам.

2. То, что вы написали, будет работать просто отлично! Проблема должна быть в чем-то другом — если вы хотите решить проблему, вам нужно опубликовать SSCCE или, по крайней мере, дать некоторые подробности о том, как вы используете результирующую строку.

Ответ №1:

Приведенный вами код будет работать абсолютно нормально:

 String suffix = "suffix";
int i = 0;
String string = Integer.toString(i);
string = string   suffix;
System.out.println(string); // 0suffix
 

Я предполагаю, что в вашем реальном коде вы не присваиваете результат обратно переменной. Обратите внимание, что оператор не изменяет существующую строку — он создает новую строку. Итак:

 String text = "text";
String copy = text;
text = text   "suffix";
System.out.println(copy); // Still just "text"; refers to original string
 

Комментарии:

1. Что, если это будет записано как строка «суффикс»? Это работает?

2. Я понял. Спасибо за вашу помощь.

3. @rulla101: Да, это будет работать нормально. Строковый литерал по-прежнему является ссылкой на строку…

Ответ №2:

Вы можете использовать функцию-член concat класса string.

 string = string.concat( Integer.toString(i) );
 

Комментарии:

1. Нет, ты этого не делаешь. Использование будет работать отлично и, как правило, более читабельно.

2. @JonSkeet — Какой приятный сюрприз ? После работы на SO более 10 месяцев получил от вас комментарий 🙂 Я изменил контекст на — «Вы можете использовать … »

Ответ №3:

Самый идиоматический способ сделать это в современной Java — это String.format("%s%d", s, i); where s is a String и i is an int .

Комментарии:

1. Это частично зависит от того, хотите ли вы выводить данные с учетом локали. При этом будет использоваться форматировщик, зависящий от локали; text integer не будет.

Ответ №4:

Оператор , если первый параметр является строкой, автоматически преобразует другие параметры в строки.

Например, в следующем коде: —

 String myString = "fred";
int suffix = 0;
myString = myString   suffix;
 

myString будет «fred0»;