6 ответов:
посмотреть строку.формат и PrintStream.формат методы.
и на основании java.утиль.Класс форматирования.
строку.пример формата:
Calendar c = new GregorianCalendar(1995, MAY, 23); String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c); // -> s == "Duke's Birthday: May 23, 1995"
10 центов ответ на это:
С
String.Format("{0} -- {1} -- {2}", ob1, ob2, ob3)эквивалентно Java
String.format("%1$s -- %2$s -- %3$s", ob1, ob2, ob3)обратите внимание на индекс на основе 1, а "s" означает преобразование в строку с помощью .toString (). Есть много других доступных преобразований и параметров форматирования:
http://download.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax
вы также можете просто использовать
%sдля строки, так как индекс является параметрическим аргументом.String name = "Jon"; int age = 26; String.format("%s is %s years old.", name, age);это менее шумно.
примечание о
%sиз документации java:если аргумент arg равен null, то результат будет "null". Если arg реализует Formattable, затем arg.фурбатто: вызывается. В противном случае результат получается путем вызова arg.toString ().
есть
String.formatв Java, хотя синтаксис немного отличается от in. NET.
на самом деле это не ответ на вопрос OP, но может быть полезно для других, которые ищут простой способ выполнения подстановки строк в строку, содержащую "элементы формата"в стиле C#.
/** * Method to "format" an array of objects as a single string, performing two possible kinds of * formatting: * * 1. If the first object in the array is a String, and depending on the number of objects in the * array, then a very simplified and simple-minded C#-style formatting is done. Format items * "{0}", "{1}", etc., are replaced by the corresponding following object, converted to string * (of course). These format items must be as shown, with no fancy formatting tags, and only * simple string substitution is done. * * 2. For the objects in the array that do not get processed by point 1 (perhaps all of them, * perhaps none) they are converted to String and concatenated together with " - " in between. * * @param objectsToFormat Number of objects in the array to process/format. * @param arrayOfObjects Objects to be formatted, or at least the first objectsToFormat of them. * @return Formatted string, as described above. */ public static String formatArrayOfObjects(int objectsToFormat, Object... arrayOfObjects) { // Make a preliminary pass to avoid problems with nulls for (int i = 0; i < objectsToFormat; i++) { if (arrayOfObjects[i] == null) { arrayOfObjects[i] = "null"; } } // If only one object, just return it as a string if (objectsToFormat == 1) { return arrayOfObjects[0].toString(); } int nextObject = 0; StringBuilder stringBuilder = new StringBuilder(); // If first object is a string it is necessary to (maybe) perform C#-style formatting if (arrayOfObjects[0] instanceof String) { String s = (String) arrayOfObjects[0]; while (nextObject < objectsToFormat) { String formatItem = "{" + nextObject + "}"; nextObject++; if (!s.contains(formatItem)) { break; } s = s.replace(formatItem, arrayOfObjects[nextObject].toString()); } stringBuilder.append(s); } // Remaining objects (maybe all of them, maybe none) are concatenated together with " - " for (; nextObject < objectsToFormat; nextObject++) { if (nextObject > 0) { stringBuilder.append(" - "); } stringBuilder.append(arrayOfObjects[nextObject].toString()); } return stringBuilder.toString(); }(и если вам интересно, я использую этот код как часть простой оболочки для методов журнала Android, чтобы упростить регистрацию нескольких вещей в одном сообщении журнала.)
Comments