Die Funktion fn:indexOf gibt die Position einer bestimmten Teil-Zeichenkette innerhalb einer Zeichenkette zurück. Es wird ein Wert vom Typ Integer zurückgegeben.
Struktur
fn:indexOf(Zeichenkette, Zeichenkette)
Parameter
Parameter | Beschreibung |
---|
Zeichenkette | Der Parameter spezifiziert die gesuchte Zeichenkette. |
Zeichenkette | Der Parameter spezifiziert den Wert (Teil-Zeichenkette), der verwendet wird, um die gesuchte Zeichenkette zu finden. |
Hinweis:
Das erste Zeichen, das in der gesuchten Zeichenkette gezählt wird, hat einen Indexwert von 0, nicht 1.
Beispiel
Kundenbestellungen werden in einem Pool-Container gespeichert. Die Produktnamen beinhalten eine Produktnummer. Der Pool-Container heißt Bestellungen und ist mit dem Benutzerattribut user.Email verlinkt. Der Produktnummer ist ein Slash (/) vorangestellt. Der Produktname wird ohne Produktnummer in eine Nachricht eingefügt.
Bei diesem Beispiel wird die Funktion fn:indexOf verwendet, um die Index-Zahl des Sonderzeichens zu bestimmen. Mithilfe der Funktion fn:substring wird nur der Produktname herausgefiltert (siehe ⇘ fn:substring). Die Funktion zur Bestimmung der Position des Slashs ist wie folgt aufgebaut:
fn:indexOf(user.relatedAttribute['Bestellungen']['Produktname'], "/")
Die Funktion gibt einen Wert vom Typ Integer zurück, welcher der Index-Zahl des Sonderzeichens entspricht. Wird diese Funktion innerhalb der Funktion fn:substring verwendet, welche nur den Produktnamen zurückgibt, so erhält man Folgendes:
{$fn:substring(user.relatedAttribute['Bestellungen']['Produktname'], "", fn:indexOf(user.relatedAttribute['Bestellungen']['Produktname'], "/"))}
Bei diesem Beispiel wird das Ergebnis aus der Funktion fn:indexOf als Parameter genutzt, um das erste Zeichen festzulegen, welches von der Teil-Zeichenkette ausgeschlossen werden soll. Der Parameter zur Bestimmung des ersten Zeichens innerhalb der Teil-Zeichenkette bleibt leer. Die zurückgegebene Teil-Zeichenkette beinhaltet alles, was dem Slash vorangestellt ist, unabhängig von der jeweiligen Position innerhalb des Datensatzes. Da pro Kunde mehr als eine Bestellung im Datensatz existieren kann, wird eine ForEach-Schleife verwendet, um alle Bestellinformationen in eine Nachricht einzufügen. Für weitere Informationen zum Aufbau einer ForEach-Schleife, siehe ⇘ Pool-Daten in Nachricht einfügen.