Citrix ADC

Opérations de base sur le texte

Les opérations de base sur le texte incluent les opérations de correspondance de chaînes, de calcul de la longueur d’une chaîne et de contrôle de la sensibilité à la casse. Vous pouvez inclure des espaces blancs dans une chaîne passée en tant qu’argument à une expression, mais la chaîne ne peut pas dépasser 255 caractères.

Fonctions de comparaison de chaînes

Le tableau suivant répertorie les opérations de correspondance de chaînes de base dans lesquelles les fonctions renvoient une valeur booléenne TRUE ou FALSE.

Fonction Description
<text>.CONTAINS(<string>) Renvoie une valeur booléenne TRUE si la cible contient <string>. Exemple : http.req.url.contains(".jpeg")
<text>.EQ(<string>) Renvoie une valeur booléenne TRUE si la cible correspond exactement à <string>. Par exemple, l’expression suivante renvoie une valeur booléenne TRUE pour une URL dont le nom d’hôte est « myhostabc » : http.req.url.hostname.eq("myhostabc")
<text>.STARTSWITH(<string>) Renvoie une valeur booléenne TRUE si la cible commence par <string>. Par exemple, l’expression suivante renvoie une valeur booléenne TRUE pour une URL dont le nom d’hôte est « myhostabc » : http.req.url.hostname.startswith("myhost")
<text>.ENDSWITH(<string>) Renvoie une valeur booléenne TRUE si la cible se termine par<string>. Par exemple, l’expression suivante renvoie une valeur booléenne TRUE pour une URL dont le nom d’hôte est « myhostabc » : http.req.url.hostname.endswith("abc")
<text>.NE(<string>) Renvoie une valeur booléenne TRUE si le préfixe n’est pas égal à l’argument de chaîne. Si le préfixe renvoie une valeur qui n’est pas une chaîne, l’argument de la fonction est comparé à la représentation sous forme de chaîne de la valeur renvoyée par le préfixe. Vous pouvez utiliser les fonctions avec SET_TEXT_MODE(IGNORECASE) or SET_TEXT_MODE(NOIGNORECASE)et avec les jeux de caractères ASCII et UTF-8.
<text>.GT(<string>) Renvoie une valeur booléenne TRUE si le préfixe est alphabétiquement supérieur à l’argument de chaîne. Si le préfixe renvoie une valeur qui n’est pas une chaîne, l’argument de la fonction est comparé à la représentation sous forme de chaîne de la valeur renvoyée par le préfixe. Vous pouvez utiliser les fonctions avec SET_TEXT_MODE(IGNORECASE) ou SET_TEXT_MODE(NOIGNORECASE), et avec les jeux de caractères ASCII et UTF-8.
<text>.GE(<string>) Renvoie une valeur booléenne TRUE si le préfixe est alphabétiquement supérieur ou égal à l’argument de chaîne. Si le préfixe renvoie une valeur qui n’est pas une chaîne, l’argument de la fonction est comparé à la représentation sous forme de chaîne de la valeur renvoyée par le préfixe. Vous pouvez utiliser les fonctions avec SET_TEXT_MODE(IGNORECASE) ou SET_TEXT_MODE(NOIGNORECASE), et avec les jeux de caractères ASCII et UTF-8.
<text>.LT(<string>) Renvoie une valeur booléenne TRUE si le préfixe est alphabétiquement inférieur à l’argument chaîne. Si le préfixe renvoie une valeur qui n’est pas une chaîne, l’argument de la fonction est comparé à la représentation sous forme de chaîne de la valeur renvoyée par le préfixe. Vous pouvez utiliser les fonctions avec SET_TEXT_MODE(IGNORECASE) ou SET_TEXT_MODE(NOIGNORECASE), et avec les jeux de caractères ASCII et UTF-8.
<text>.LE(<string>) Renvoie une valeur booléenne TRUE si le préfixe est alphabétiquement inférieur ou égal à l’argument chaîne. Si le préfixe renvoie une valeur qui n’est pas une chaîne, l’argument de la fonction est comparé à la représentation sous forme de chaîne de la valeur renvoyée par le préfixe. Vous pouvez utiliser les fonctions avec SET_TEXT_MODE(IGNORECASE) ou SET_TEXT_MODE(NOIGNORECASE), et avec les jeux de caractères ASCII et UTF-8.

Calculer la longueur d’une chaîne

L’ <text>.LENGTH opération renvoie une valeur numérique égale au nombre de caractères (et non d’octets) d’une chaîne :

<text>.LENGTH

Par exemple, vous pouvez souhaiter identifier les URL de demande qui dépassent une longueur particulière. Voici une expression qui implémente cet exemple :

HTTP.REQ.URL.LENGTH < 500

Après avoir compté les caractères ou les éléments d’une chaîne, vous pouvez leur appliquer des opérations numériques. Pour plus d’informations, consultez Expressions de stratégie avancées : utilisation des dates, des heures et des nombres.

Considérez, ignorez et modifiez la casse du texte

Les fonctions suivantes fonctionnent sur la casse (majuscule ou minuscule) des caractères de la chaîne.

Fonction Description  
<text>.SET_TEXT_MODE(IGNORECASE NOIGNORECASE) Cette fonction active ou désactive la sensibilité à la casse pour toutes les opérations de texte.
<text>.TO_LOWER Convertit la cible en minuscules pour un bloc de texte d’une taille maximale de 2 kilo-octets (Ko). Renvoie UNDEF si la cible dépasse 2 Ko. Par exemple, la chaîne « abCD : » est convertie en « abcd : » .  
<text>.TO_UPPER Convertit la cible en majuscules. Renvoie UNDEF si la cible dépasse 2 Ko. Par exemple, la chaîne « AbCD : » est convertie en « ABCD : » .  

Dépouille des caractères spécifiques d’une chaîne

Vous pouvez utiliser la fonction STRIP_CHARS (<string>) pour supprimer des caractères spécifiques du texte renvoyé par un préfixe d’expression de stratégie avancée (la chaîne d’entrée). Toutes les instances des caractères spécifiés dans l’argument sont retirées de la chaîne d’entrée. Vous pouvez utiliser n’importe quelle méthode de texte sur la chaîne résultante, y compris les méthodes utilisées pour faire correspondre la chaîne à un jeu de motifs.

Par exemple, dans l’expression CLIENT.UDP.DNS.DOMAIN.STRIP\_CHARS(".-\_"), la fonction STRIP\_CHARS(<string>) supprime tous les points (.), tirets (-) et traits de soulignement (_) du nom de domaine renvoyé par le préfixe CLIENT.UDP.DNS.DOMAIN. Si le nom de domaine renvoyé est « a.dom_ai_n-name », la fonction renvoie la chaîne « adomainname ».

Dans l’exemple suivant, la chaîne résultante est comparée à un jeu de motifs appelé « listofdomains » :

CLIENT.UDP.DNS.DOMAIN.STRIP_CHARS(".-_").CONTAINS_ANY("listofdomains")

Remarque : Vous ne pouvez pas effectuer de réécriture sur la chaîne renvoyée par la fonction STRIP_CHARS(<string>).

Les fonctions suivantes enlève les caractères correspondants du début et de la fin d’une entrée de chaîne donnée.

Fonction Description
<text>.STRIP_START_CHARS(s) Enlève les caractères correspondants depuis le début de la chaîne d’entrée jusqu’à ce que le premier caractère non concordant soit trouvé et renvoie le reste de la chaîne. Vous devez spécifier les caractères que vous souhaitez supprimer sous la forme d’une chaîne unique entre guillemets. Par exemple, si le nom d’un en-tête est TestLang et que :/en_us:est sa valeur, HTTP.RES.HEADER (« TestLang ») .STRIP_START_CHARS (« : «) supprime les caractères spécifiés depuis le début de la valeur de l’en-tête jusqu’à ce que le premier caractère non correspondant e soit trouvé et renvoie sen_us : sous la forme d’un chaîne.
<text>.STRIP_END_CHARS(s) Enlève les caractères correspondants depuis la fin de la chaîne d’entrée jusqu’au premier caractère non correspondant est trouvé et renvoie le reste de la chaîne. Vous devez spécifier les caractères que vous souhaitez supprimer sous la forme d’une chaîne unique entre guillemets. Par exemple, si le nom d’un en-tête est TestLang et que :/en_us:is its value,HTTP.RES.HEADER(“TestLang”).STRIP_START_CHARS(“:”) supprime les caractères spécifiés à partir de la fin de la valeur de l’en-tête jusqu’à ce que le premier caractère non correspondant s soit trouvé et renvoie : /_en_us sous forme de chaîne.

Ajouter une chaîne à une autre chaîne

Vous pouvez utiliser la fonction APPEND () pour ajouter la représentation sous forme de chaîne de l’argument à la représentation sous forme de chaîne de la valeur renvoyée par la fonction précédente. La fonction précédente peut être une fonction qui renvoie un nombre, un long non signé, un double, une valeur temporelle, une adresse IPv4 ou une adresse IPv6. L’argument peut être une chaîne de texte, un nombre, un long non signé, un double, une valeur temporelle, une adresse IPv4 ou une adresse IPv6. La valeur de chaîne résultante est la même valeur de chaîne que celle obtenue à l’aide de l’opérateur +.

Opérations de base sur le texte