Мне нужно создать несколько электронных текстов. Ничего необычного, просто замените что-то вроде @[email protected]
на реальное значение. Нет изображений, нет форматирования и т.д.
Какой java lib вы могли бы порекомендовать? Чем проще, тем лучше.
Мне нужно создать несколько электронных текстов. Ничего необычного, просто замените что-то вроде @[email protected]
на реальное значение. Нет изображений, нет форматирования и т.д.
Какой java lib вы могли бы порекомендовать? Чем проще, тем лучше.
Вы можете дать Velocity или Freemarker выстрел. Я использовал оба в моделях шаблонов электронной почты. Они обеспечивают простой синтаксис для основных случаев использования, но вы можете получить довольно сложный позже!
Из этих двух я лично предпочитаю Freemarker, потому что они сделали очень хорошую работу по предоставлению всех видов встроенных функций, которые очень упрощают форматирование чисел и текста.
Альтернатива библиотекам, уже предложенная библиотекой: java.text.MessageFormat
.
StringTemplate - еще один вариант. пятиминутное введение дает некоторые базовые примеры и синтаксис.
StringTemplate hello = new StringTemplate("Hello, $name$",
DefaultTemplateLexer.class);
hello.setAttribute("name", "World");
System.out.println(hello.toString());
Вы пробовали скорость Apache?
Попробуйте Apache Velocity или FreeMarker, они могут быть полезны, для меня я использую FreeMarker
Очень просто сделать это самостоятельно:
public class Substitution {
public static void main(String[] args) throws Exception {
String a = "[email protected]@ccc";
// This can be easiliy FileReader or any Reader
Reader sr = new StringReader(a);
// This can be any Writer (ie FileWriter)
Writer wr = new StringWriter();
for (;;) {
int c = sr.read();
if (c == -1) { //EOF
break;
}
if (c == '@') {
String var = readVariable(sr);
String val = getValue(var);
wr.append(val);
}
else {
wr.write(c);
}
}
}
/**
* This finds the value from Map, or somewhere
*/
private static String getValue(String var) {
return null;
}
private static String readVariable(Reader sr)throws Exception {
StringBuilder nameSB = new StringBuilder();
for (;;) {
int c = sr.read();
if (c == -1) {
throw new IllegalStateException("premature EOF.");
}
if (c == '@') {
break;
}
nameSB.append((char)c);
}
return nameSB.toString();
}
}
Вам нужно немного отполировать его, но все.
Согласовано, скорость Apache - хороший вызов для встроенных ситуаций.
Если вы хотите автономный продукт, вы также можете использовать Apache Ant. Он уменьшает шаблон в задаче копирования, применяя фильтры подстановки.