Могу ли я предложить создать новый класс с именем CustomMessageFormat
:
public class CustomMessageFormat
{
public static String format( String message, Object[] params )
{
Pattern pattern = Pattern.compile( "\\{(.*?)\\}" );
Matcher matcher = pattern.matcher( message );
StringBuffer sb = new StringBuffer();
int i = 0;
while ( matcher.find() )
{
matcher.appendReplacement( sb, "{" + ( i++ ) + "}" );
}
matcher.appendTail( sb );
return MessageFormat.format( sb.toString(), params );
}
}
Что все, что нужно, это заменить все ваши токены {sometext} на последовательные ({1}, {2} и т. Д.), Как того требует метод MessageFormat.format
.
Вы можете просто использовать:
public static void main( String[] args )
{
String inputMessage = "The {def1} in {def2} stays mainly in the {def3}.";
String result = CustomMessageFormat.format( inputMessage, new Object[] { "sun", "Paris", "suburbs" } );
System.out.println( result );
}
Это, конечно, грубый пример, но я надеюсь, что вы поняли идею.