I have stored some messages in a resource bundle. I'm trying to format these messages as follows.
import java.text.MessageFormat; String text = MessageFormat.format("You're about to delete {0} rows.", 5); System.out.println(text);
Assume that the first parameter i.e the actual message is stored in a property file which is somehow retrieved.
The second parameter i.e 5 is a dynamic value and should be placed in the placeholder {0}
which doesn't happen. The next line prints,
Youre about to delete {0} rows.
The placeholder is not replaced with the actual parameter.
It is the apostrophe here - You're
. I have tried to escape it as usual like You\\'re
though it didn't work. What changes are needed to make it work?
The most common way of formatting a string in java is using String. format(). If there were a “java sprintf” then this would be it.
The ICU format is a widely used message format in numerous translation software systems and i18n libraries. It provides a clear view of the expected data in the source messages. If you have ever localized a software project, you have most likely used the ICU message format.
Add an extra apostrophe '
to the MessageFormat
pattern String
to ensure the '
character is displayed
String text = java.text.MessageFormat.format("You''re about to delete {0} rows.", 5); ^
An apostrophe (aka single quote) in a MessageFormat pattern starts a quoted string and is not interpreted on its own. From the javadoc
A single quote itself must be represented by doubled single quotes '' throughout a String.
The String
You\\'re
is equivalent to adding a backslash character to the String
so the only difference will be that You\re
will be produced rather than Youre
. (before double quote solution ''
applied)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With