MessageFormat vs StringBuffer

时间:2012-12-11 16:48:50

标签: java string

我知道,在Java中你可以使用

构建字符串
  • MessageFormat以及类似"You said {0} just now"
  • 的字符串
  • StringBuffer

    之类的构造
    StringBuffer mail = new StringBuffer("Dear ");
    mail.append(user.name);
    mail.append(",\nCongratulations!");
    ....
    
  • 可能有其他好的选项,字符串连接不是其中之一

那么,我应该使用哪种方法?我的想法是:我有5-6个标准文本,我必须动态地替换一些内容。我认为将文本作为常量放在某处(带有常量或属性文件的类)会更好,只需在需要时快速替换它。否则,我的源代码中间会有一些字符串可能会在某天更改,例如StringBuffer("Dear ")

我有更好的选择吗?

4 个答案:

答案 0 :(得分:1)

如果是您想要生成的电子邮件,我建议不要这样做。我宁愿看到一个用于在其上下文中映射来自Java对象的值的lettter或email主体的Velocity模板。这将更容易理解和维护。模板可以从代码中外部化,因此更改更容易。

答案 1 :(得分:1)

    String str = new StringBuffer().append("Hello").append("World").toString();
    System.out.println(str);

            //print Hello World 

             it contain into package import java.text.MessageFormat;
             "When you using Message format"
              Object[] values = { "123456", "asdfjk" };

    String output = MessageFormat.format("Value 1 equals: {0} and Value 2 equals{1}", values);
    System.out.println(output);
    // prints:
    // The value of value 1 is: 123456 The value of value 2 is: asdfjk

答案 2 :(得分:1)

你认为你应该是最简单和最清楚的。我会个人使用

String mail = "Dear " + user.name + ",\nCongratulations!";

它比使用StringBuffer或MessageFormat更短,更有效。

答案 3 :(得分:1)

正如各种评论中所建议的那样StringBuilder是字符串连接的最快实现。 MessageFormat在内部使用StringBuilder和正则表达式开销。