Class MessageFormatter

java.lang.Object
org.slf4j.helpers.MessageFormatter

public final class MessageFormatter extends Object
Formats messages according to very simple substitution rules. Substitutions can be made 1, 2 or more arguments.

For example,

MessageFormatter.format("Hi {}.", "there")
will return the string "Hi there.".

The {} pair is called the formatting anchor. It serves to designate the location where arguments need to be substituted within the message pattern.

In case your message contains the '{' or the '}' character, you do not have to do anything special unless the '}' character immediately follows '{'. For example,

 MessageFormatter.format("Set {1,2,3} is not equal to {}.", "1,2");
 
will return the string "Set {1,2,3} is not equal to 1,2.".

If for whatever reason you need to place the string "{}" in the message without its formatting anchor meaning, then you need to escape the '{' character with '\', that is the backslash character. Only the '{' character should be escaped. There is no need to escape the '}' character. For example,

 MessageFormatter.format("Set \\{} is not equal to {}.", "1,2");
 
will return the string "Set {} is not equal to 1,2.".

The escaping behavior just described can be overridden by escaping the escape character '\'. Calling

 MessageFormatter.format("File name is C:\\\\{}.", "file.zip");
 
will return the string "File name is C:\file.zip".

See format(String, Object), format(String, Object, Object) and arrayFormat(String, Object[]) methods for more details.

  • Constructor Details

    • MessageFormatter

      public MessageFormatter()
  • Method Details

    • format

      public static final String format(String messagePattern, Object arg)
      Performs single argument substitution for the 'messagePattern' passed as parameter.

      For example,

       MessageFormatter.format("Hi {}.", "there");
       
      will return the string "Hi there.".

      Parameters:
      messagePattern - The message pattern which will be parsed and formatted
      argument - The argument to be substituted in place of the formatting anchor
      Returns:
      The formatted message
    • format

      public static final String format(String messagePattern, Object arg1, Object arg2)
      Performs a two argument substitution for the 'messagePattern' passed as parameter.

      For example,

       MessageFormatter.format("Hi {}. My name is {}.", "Alice", "Bob");
       
      will return the string "Hi Alice. My name is Bob.".
      Parameters:
      messagePattern - The message pattern which will be parsed and formatted
      arg1 - The argument to be substituted in place of the first formatting anchor
      arg2 - The argument to be substituted in place of the second formatting anchor
      Returns:
      The formatted message
    • arrayFormat

      public static final String arrayFormat(String messagePattern, Object[] argArray)
      Same principle as the format(String, Object) and format(String, Object, Object) methods except that any number of arguments can be passed in an array.
      Parameters:
      messagePattern - The message pattern which will be parsed and formatted
      argArray - An array of arguments to be substituted in place of formatting anchors
      Returns:
      The formatted message