Dynamic Placeholder substitution in properties in java

manish picture manish · Feb 5, 2010 · Viewed 59.2k times · Source

I wanted to substitute the placeholder dynamically in properties in a java application. Like

 WelcomeMessage=Welcome Mr. {firstName} {lastName} !!!

These firstName and LastName variable needs to be substituted dynamically. Should we use velocity template engine for the same? Or are there any other opensource frameworks for the same?

Thanks, Manish

Answer

Chandra Sekar picture Chandra Sekar · Feb 5, 2010

You can use the MessageFormat class of Java SE. It allows you to do exactly what you ask for.

In your case the below code snippet must do the trick, assuming props contains all the properties loaded from your file.

MessageFormat.format((String) props.get("WelcomeMessage"), "First", "Last");

Note that your properties files should have index of parameters instead of named parameters as below.

WelcomeMessage=Welcome Mr. {0} {1} !!!