Java équivalent à .NET Ssortingng.Format

Existe-t-il un équivalent à .NET Ssortingng.Format en Java?

Consultez les méthodes Ssortingng.format et PrintStream.format .

Les deux sont basés sur la classe java.util.Formatter .

Exemple de chaîne.format:

 Calendar c = new GregorianCalendar(1995, MAY, 23); Ssortingng s = Ssortingng.format("Duke's Birthday: %1$tm %1$te,%1$tY", c); // -> s == "Duke's Birthday: May 23, 1995" 

Exemple System.out.format:

 // Writes a formatted ssortingng to System.out. System.out.format("Local time: %tT", Calendar.getInstance()); // -> "Local time: 13:34:18" 

La réponse de 10 cent à ceci est:

C #’s

 Ssortingng.Format("{0} -- {1} -- {2}", ob1, ob2, ob3) 

est équivalent à Java

 Ssortingng.format("%1$s -- %2$s -- %3$s", ob1, ob2, ob3) 

Notez l’index basé sur 1, et le “s” signifie convertir en chaîne en utilisant .toSsortingng (). Il existe de nombreuses autres conversions disponibles et des options de formatage:

http://download.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax

MessageFormat.format() utilise la notation .net.

Vous pouvez aussi simplement utiliser %s pour ssortingng car l’index est un argument optionnel.

 Ssortingng name = "Jon"; int age = 26; Ssortingng.format("%s is %s years old.", name, age); 

C’est moins bruyant.

Remarque sur %s partir de la documentation Java:

Si l’argument arg est null, le résultat est “null”. Si arg implémente Formattable, alors arg.formatTo est appelé. Sinon, le résultat est obtenu en appelant arg.toSsortingng ().

Il existe un Ssortingng.format en Java, bien que la syntaxe soit légèrement différente de celle de .NET.

Ce n’est pas vraiment une réponse à la question du PO, mais peut être utile pour ceux qui recherchent un moyen simple d’effectuer la substitution de chaînes dans une chaîne contenant des “éléments de format” de type C #.

  /** * Method to "format" an array of objects as a single ssortingng, performing two possible kinds of * formatting: * * 1. If the first object in the array is a Ssortingng, 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 ssortingng * (of course). These format items must be as shown, with no fancy formatting tags, and only * simple ssortingng 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 Ssortingng 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 ssortingng, as described above. */ public static Ssortingng 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) { ssortingngBuilder.append(" - "); } ssortingngBuilder.append(arrayOfObjects[nextObject].toSsortingng()); } return ssortingngBuilder.toSsortingng(); } 

(Et si vous êtes curieux, j’utilise ce code dans le cadre d’un simple wrapper pour les méthodes Android Log, afin de faciliter l’enregistrement de plusieurs éléments dans un seul message de journal.)