Эквивалент String.Format (.NET) в Java?

String.Format в .NET (возможно, просто VB.NET) преобразует {0}, {1}, ... в определенную строку, например:

Dim St As String = "Test: {0}, {1}"
Console.WriteLine(String.Format(St, "Text1", "Text2"))

Я пробовал искать как в Google, так и в StackOverflows, но все они возвращают числовой формат.


person Luke Vo    schedule 21.07.2011    source источник
comment
Связанный вопрос: stackoverflow.com/questions/187676/   -  person Möoz    schedule 16.04.2014
comment
возможный дубликат Java, эквивалентный .NET String.Format   -  person Möoz    schedule 16.04.2014


Ответы (3)


Другие предложения, безусловно, хороши, но они больше в стиле printf и его происхождение, которое является более поздним дополнением к Java. Опубликованный вами код вдохновлен _2 _.

String format = "Test: {0}, {1}"
System.out.println(MessageFormat.format(format, "Text1", "Text2"))

Я не совсем уверен в том, что делает оператор 'Return:.

person laz    schedule 21.07.2011

Используйте MessageFormat.format, вы также можете предоставить аргументы форматирования в токенах замены.

message = MessageFormat.format("This is a formatted percentage " +
                "{0,number,percent} and a string {1}", varNumber, varText);
        System.out.println(message);

message = MessageFormat.format("This is a formatted {0, number,#.##} " +
                "and {1, number,#.##} numbers", 25.7575, 75.2525);
        System.out.println(message);

В качестве альтернативы можно использовать String.format, но это не гарантирует положение, например String.format("What do you get if you multiply %d by %s?", varNumber, varText);.

person James    schedule 21.07.2011
comment
Это неполный ответ. Это не прямая замена. {0} и {1} в .NET существуют для определения местоположения параметров. Например, это может быть Test: {1}, {0}, поэтому% s,% s заменит неправильные местоположения. - person frankish; 23.03.2013

System.out.printf()
System.out.format()

Для других методов используют:

StringBuilder sb = new StringBuilder();
Formatter f = new Formatter(sb, Locale.US);
f.format("my %s", "string");
person Jesus Ramos    schedule 21.07.2011
comment
Он выглядит намного длиннее, чем метод spinning_plate, в чем его отличие? - person Luke Vo; 21.07.2011
comment
Это тот же результат, хотя я считаю, что Formatter может намного больше, но я бы пошел с его методом, я просто хотел показать некоторые другие на случай, если вы выполняете разные типы форматирования. - person Jesus Ramos; 21.07.2011