Как использовать Java для редактирования шаблона документа (бланка письма) из файла? - PullRequest
3 голосов
/ 27 ноября 2008

Я играю с Java впервые и мне нужно заменить некоторые слова в шаблоне. пример шаблона -

"Уважаемый PUT_THEIR_NAME_HERE,

Я связываюсь с тобой ..... бла бла бла

С уважением,

PUT_COMPANY_NAME_HERE "

Какой самый простой способ (желательно с использованием стандартной библиотеки) сделать копию этого файла шаблона и добавить правильные слова в нужное место, а затем сохранить его в файловой системе? Мне нужно сделать много таких простых шаблонов, чтобы можно было легко их воспроизвести.

Я также обращаюсь к Java через JavaScript, используя Rhino, не уверен, имеет ли это какое-то значение.

С уважением,

Chris

Ответы [ 7 ]

12 голосов
/ 27 ноября 2008

Вы ищете java.text.MessageFormat:

Вот несколько примеров использования (из JavaDoc):

 Object[] arguments = {
     new Integer(7),
     new Date(System.currentTimeMillis()),
     "a disturbance in the Force"
 };

 String result = MessageFormat.format(
     "At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
     arguments);

 output: At 12:30 PM on Jul 3, 2053, there was a disturbance
           in the Force on planet 7.
5 голосов
/ 27 ноября 2008

Для расширенных функций (например, циклов) вы можете использовать Apache Velocity или FreeMarker .

2 голосов
/ 27 ноября 2008

Действительно упрощенный способ:

Конечно, не пуленепробиваемый.

C:\oreyes\samples\java\replace>type Simplistic.java
public class Simplistic{
    public static void main( String [] args ) {
        String template = "Dear _NAME_HERE_. I'm glad you...";
        System.out.println( template.replaceAll("_NAME_HERE_","Oscar Reyes"));
    }
}

C:\oreyes\samples\java\replace>java Simplistic
Dear Oscar Reyes. I'm glad you...

Вот официальный документ по этому методу, если вы хотите продолжить исследование

http://java.sun.com/javase/6/docs/api/java/lang/String.html#replaceAll(java.lang.String,java.lang.String)

Я рад слышать, что вы изучаете Java!

1 голос
/ 27 ноября 2008

Текущий пост с самым высоким рейтингом является точным, но не самым кратким способом использования API в Java 6. Нет необходимости создавать массив аргументов или явно указывать целое число, а новый Date () по умолчанию использует текущее время:

String result = MessageFormat.format («На {1, время} на {1, дата}, было {2} на планете {0, число, целое число}.», 7, новая дата (), « возмущение силой ");

Всего несколько советов, чтобы сделать ваш код более читабельным и простым в обслуживании.

0 голосов
/ 27 ноября 2008

Вы можете использовать класс StringSubstitutor библиотеки commons-lang

0 голосов
/ 27 ноября 2008

Ну, самый простой способ - прочитать файл в строку, выполнить replaceAll (один раз для каждого слова, которое вы хотите заменить), а затем записать результат в новый файл. Это не самый эффективный подход, но он хорошо работает для простых задач.

0 голосов
/ 27 ноября 2008

Я написал для этого класс, когда я портировал приложение на Java ~ 10 лет назад:

http://github.com/dustin/spyjar/tree/master/src/java/net/spy/util/SpyToker.java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...