1

我明白了,在 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

4 回答 4

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
于 2012-12-11T17:06:47.750 回答
1

你应该相信最简单最清楚的。我个人会使用

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

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

于 2012-12-11T17:15:54.907 回答
1

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

于 2012-12-11T16:51:08.533 回答
1

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

于 2015-10-12T08:51:56.417 回答