...
String Manipulation
Freemarker besitzt viele sog. built-ins zur Manipulation von Strings, also Zeichenketten.
Folgender Ausdruck gibt unseren ${name!} in GROßBUCHSTABEN aus:
Code Block |
---|
${name!?upper_case} |
Das Fragezeichen ?
wendet das "built-in" upper_case auf die Variable name an.
Info | ||
---|---|---|
| ||
Man kann mehrere Freemarker built-ins hintereinander hängen ("chain"). Beispiel: ${SPALTENNAME!?remove_beginning("|")?remove_ending("|")?trim} Dieses Beispiel würde vorn und hinten das Pipe-Zeichen entfernen und am Schluss auch noch trimmen, d.h. die Leerzeichen hinten und vorn entfernen. |
Zahlen Manipulation und Rechnen (arithmetische Funktionen)
Freemarker besitzt built-ins zur Manipulation von Zahlen.
Code Block |
---|
${price?number?string.currency} |
Die Ausgabe ist $42.00
Die verwendete Locale ist die des Servers, d.h. en_US. Das ?number Built-In ist notwendig, um aus einem String erst eine Zahl zu machen. Wenn die entsprechende Variable bereits eine Zahl ist, is ?number nicht notwendig.
Um den Preis in deutscher Locale auszugeben wäre es
Code Block |
---|
<#setting locale="de_DE"> ${price?number?string.currency} |
Die Ausgaben wäre bei de_DE 42,00 €
Info | ||
---|---|---|
| ||
Hinweis: Freemarker erwartet bei mathematischen Funktionen immer einen Punkt als Dezimaltrenner. D.h. falls Zahlen mit Komma als Dezimaltrenner existieren, muss das Komma erst durch einen Punkt ersetzt werden. Eine Möglichkeit wäre, dazu die ?replace Funktion zu benutzen:
|
Rechnen
Mit Freemarker kann man auch rechnen. Lesen Sie dazu mehr über arithmetische Funktionen.
Beispiel:
Code Block |
---|
${1 + 2} # gibt 3 aus ${spalte1?number + spalte2?number} # gibt die Summer von zwei Spalten aus. |
Datumsfunktionen
Datumsmanipulation ist auch mit Freemarker möglich.Code Block |
---|
<#assign purchaseDate = .now> ${purchaseDate?string('yyyy-MM-dd HH:mm:ss zzzz')} |
Ausgabe ist z.B. 2013-07-12 19:19:15 Central European Summer Time
Datumsangaben Vergleichen
Code Block | ||||
---|---|---|---|---|
| ||||
<#if ("2020-12-11 20:09:42"?datetime('yyyy-MM-dd HH:mm:ss') > "2020-12-10 10:09:42"?datetime('yyyy-MM-dd HH:mm:ss')) >.
Das erste Datum ist neuer.
<#else>
Das erste Datum ist älter.
</#if> |
Bedingungen / Boolean expressions (IF/ELSE)
Wenn/Dann Logik wird durch sog. Boolesche Ausdrücke realisiert. Damit lassen sich Spalteninhalte in Abhängigkeit von anderen Quellspalten manipulieren.
Zum Beispiel könnte man sagen, dass die Versandkosten 0 EUR betragen sollen, wenn der Preis größer 100 EUR ist. Ansonsten könnten die Versandkosten 5 EUR betragen.
Code Block | ||
---|---|---|
| ||
<#if (price?number >= 100)>0 EUR<#else>5 EUR</#if> |
Code Block | ||
---|---|---|
| ||
<#if name?contains('u')> This is a name containing the letter 'u' <#else> No 'u' contained </#if> |
IF/ELSE mit String-Vergleichen:
Code Block |
---|
<#if brandname! == ''> Brandname is empty. <#else> ${brandname!} </#if> |
Bei Vergleichen von Zeichenketten sollten Sie auf Leerzeichen achten und diese ggf. mit ?trim entfernen bzw. "wegschneiden".
Code Block |
---|
<#if brandname!?trim == ''> Brandname is really empty (spaces trimmed). <#else> ${brandname!} </#if> |
Prüfen, ob Zeichenkette mit einem bestimmten Prefix startet (siehe starts_with)
Code Block |
---|
<#if brandname!?starts_with('myprefix')> Yes, brandname starts with myprefix <#else> No, brandname does not start with the prefix. </#if> |
...