Здесь используется регулярное выражение, которое использует только стандартную библиотеку регулярных выражений. (Я немного ржавый, поэтому могут быть несколько синтаксических ошибок, но это, по крайней мере, общая идея)
#include <regex.h>
#include <string.h>
#include <vector.h>
using namespace std;
vector<string> split(string s){
regex r ("\\w+"); //regex matches whole words, (greedy, so no fragment words)
regex_iterator<string::iterator> rit ( s.begin(), s.end(), r );
regex_iterator<string::iterator> rend; //iterators to iterate thru words
vector<string> result<regex_iterator>(rit, rend);
return result; //iterates through the matches to fill the vector
}
Вы также можете сделать это в Velocity, но не с DateTool (в любом случае это относится к дополнительным функциям Velocity).
Хорошей практикой является создание объекта «Format» с различными утилитами, которые являются практичными только для презентационных целей (вы можете видеть различные структуры, которые используют Velocity, как они имеют объекты «Format»).
Таким образом, ваш код будет выглядеть как формат $ format.dateFromNow (), и будет существовать презентация подход.
Вы можете написать свои собственные методы для использования в FreeMarker: http://freemarker.sourceforge.net/docs/pgui_datamodel_method.html
создать DataAddMethod, который выполняет эту логику .
Я знаю, что это сообщение действительно старое, но для людей из будущего, которые все еще ищут ответ: манипуляция с датами может быть выполнена для преобразования дат в / из миллисекунд:
${(mydate?long - 18 * 86400000)?number_to_date?string("yyyy-MM-dd")}
, например, вычитает 18 дней с mydate
. (Обратите внимание, что 86400000 - это количество миллисекунд в день)