I'm sure I've seen String.format
used like this before:
String.format("Some {1}, {2}, {3}", var1, var2, var3);
Does this ring any bells for anyone? Maybe I'm thinking of C#, is there a way of achieving the same in java?
I know you can do something like:
String.format("Some %s, %d, %s", aString, aNumber, aString)
but the syntax I'm after is for the former...
I do not like to specify both index of parameter or its type - mainly when throwing exception and preparing message for it. I like way SLF4j does it. So I wrapped org.slf4j.helpers.MessageFormatter like this:
Then you can use it like this:
If you want to use empty placeholders (without positions), you could write a small utility around
Message.format()
, like thisAnd then, can use it like,
Yes, that's the typical format string of C#. In Java, you can use the latter, that is,
String.format("%s %d %d", ...)
.An alternative is to use
MessageFormat.format("Some {0}, {1}, {2}", var1, var2, var3)
, which uses the .NET curly braces notation, as mentioned by @Tobias, though it requires you to importjava.text.MessageFormat
. They are also more appropriate for when you are dealing with localized resources, where you typically have external.properties
files with messages in the formatError {0} ocurred due to {1}
.What you are looking for is
MessageFormat
, which uses a given format and input parameters, e.g.And as already mentioned,
String.format
can still do the job using the alternate syntax, but it is less powerful in functionality and not what you requested.