MessageFormat vs StringBuffer



我明白了,在Java中你可以用

  • MessageFormat和像"You said {0} just now"一样的字符串
  • StringBuffer和类似结构

    StringBuffer mail = new StringBuffer("Dear ");
    mail.append(user.name);
    mail.append(",nCongratulations!");
    ....
    
  • 可能还有其他不错的选择,字符串连接不是其中之一

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

我有更好的选择吗?

    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

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

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

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

它比使用 StringBuffer 或 MessageFormat 更短、更高效。

正如各种注释中所建议的StringBuilder是字符串连接的最快实现。 MessageFormat内部使用具有正则表达式开销的StringBuilder

最新更新