Funktionen zur Bearbeitung von Zeichenketten
Länge der Zeichenkette
${LEN(foo)}
gibt die Länge der Zeichenkette foo zurück. Zum Beispiel,
exten => 100,1,Set(Fruit=pear)
exten => 100,2,NoOp(${LEN(Fruit)})
exten => 100,3,NoOp(${LEN(${Fruit})})
Der erste Aufruf von NoOp sollte den Wert 5 anzeigen (Länge der Zeichenkette „fruit“). Der zweite Aufruf von NoOp sollte den Wert 4 anzeigen (Länge der Zeichenkette „pear“).
Diese Methode ermöglicht eine hervorragende Prüfung auf leere Zeichenketten und auf Variablen, die NULL enthalten.
Teilzeichenketten
${foo:offset:length}
gibt eine Teilzeichenkette der Zeichenkette foo zurück, beginnend bei der Verschiebung offset und begrenzt auf eine Länge von length Zeichen.
- Wenn der Wert von offset negativ ist, wird die Verschiebung nicht vom Anfang der Zeichenkette, sondern vom Ende der Zeichenkette aus gezählt.
- Wenn der Wert von length weggelassen oder negativ ist, wird die Länge der zurückgegebenen Zeichenkette nicht begrenzt, und es wird die gesamte Zeichenkette ab der Verschiebung offset zurückgegeben.
Beispiele:
${123456789:1} - gibt die Zeichenkette 23456789 zurück
${123456789:-4} - gibt die Zeichenkette 6789 zurück
${123456789:0:3} - gibt die Zeichenkette 123 zurück
${123456789:2:3} - gibt die Zeichenkette 345 zurück
${123456789:-4:3} - gibt die Zeichenkette 678 zurück
Verwendungsbeispiel:
exten => _NXX.,1,Set(areacode=${EXTEN:0:3}) - erhält die ersten 3 Ziffern aus der Variablen ${EXTEN}
exten => _516XXXXXXX,1,Dial(${EXTEN:3}) - erhält den Wert der Variablen ${EXTEN} nach den ersten 3 Ziffern
exten => 100,1,Set(whichVowel=4)
exten => 100,2,Set(foo=AEIOU:${whichVowel}:1) - die Variable ${foo} hat den Wert 'U'
Verkettung von Zeichenketten
Um zwei Zeichenketten zu verketten, schreiben Sie die Direktive einfach wie unten gezeigt:
${foo}${bar}
555${theNumber}
${longDistancePrefix}555${theNumber}
Mathematische Operationen mit Variablen
Für mathematische Aktionen mit Variablen, wie Inkrement, Multiplikation, Addition. Schreiben Sie einfach:
exten => s,1,Set(SOMEVAR=$[${SOMEVAR} + 1]) ; Inkrement
exten => s,2,Set(SOMEVAR=$[2 * ${SOMEVAR}]) ; Multiplikation usw.
Sie müssen Leerzeichen in Ausdrücken verwenden, wie oben gezeigt.
Ab der Asterisk-Version 1.2 steht auch die Funktion MATH zur Verfügung...
exten => s,1,Set(SOMEVAR=${MATH(${SOMEVAR}+1)}) ; Inkrement
exten => s,2,Set(SOMEVAR=${MATH(2*${SOMEVAR})}) ; Multiplikation usw.
Hinweise zu verschiedenen Versionen
- Die Variable CALLINGPRES wurde am 2004-09-10 in CVS HEAD hinzugefügt und in Asterisk 1.2 veröffentlicht.
- Die Variable TOUCH_MONITOR wurde am 2005-01-05 in CVS HEAD hinzugefügt und in Asterisk 1.2 veröffentlicht.
