Citrix ADC

テキストの基本操作

テキストに対する基本的な操作には、文字列の一致、文字列の長さの計算、大文字と小文字の区別を制御する操作が含まれます。式の引数として渡される文字列には空白を含めることができますが、文字列は 255 文字を超えることはできません。

文字列比較関数

次の表は、関数が TRUE または FALSE のブール値を返す基本的な文字列照合操作の一覧です。

機能 説明
<text>.CONTAINS(<string>) ターゲットに<string>が含まれる場合、ブール型 TRUE 値を返します。例:http.req.url.contains(".jpeg")
<text>.EQ(<string>) ターゲットが<string>と完全に一致する場合、ブール型 TRUE 値を返します。たとえば、次の式は、ホスト名が「myhostabc」の URL に対してブール値 TRUE を返します。http.req.url.hostname.eq("myhostabc")
<text>.STARTSWITH(<string>) ターゲットが<string>で始まる場合は、ブール型 TRUE 値を返します。たとえば、次の式は、ホスト名が「myhostabc」の URL に対してブール値 TRUE を返します。 http.req.url.hostname.startswith("myhost")
<text>.ENDSWITH(<string>) ターゲットが\ で終わっている場合、ブール値 TRUE を返します <string\ >。たとえば、次の式は、ホスト名が「myhostabc」の URL に対してブール値 TRUE を返します。http.req.url.hostname.endswith("abc")
<text>.NE(<string>) 接頭辞が文字列引数と等しくない場合に、ブール型 TRUE 値を返します。接頭辞が文字列以外の値を返す場合、関数の引数は接頭辞によって返される値の文字列表現と比較されます。この関数は、ASCII 文字セットと UTF-8 文字セットの両方で、およびSET_TEXT_MODE(IGNORECASE) or SET_TEXT_MODE(NOIGNORECASE)で使用できます。
<text>.GT(<string>) プレフィックスが文字列引数よりもアルファベット順で大きい場合は、ブール型 TRUE 値を返します。接頭辞が文字列以外の値を返す場合、関数の引数は接頭辞によって返される値の文字列表現と比較されます。関数は、SET_TEXT_MODE(IGNORECASE)またはSET_TEXT_MODE(NOIGNORECASE)、および ASCII 文字セットと UTF-8 文字セットの両方で使用できます。
<text>.GE(<string> プレフィックスがアルファベット順で文字列引数より大きいか等しい場合は、ブール型 TRUE 値を返します。接頭辞が文字列以外の値を返す場合、関数の引数は接頭辞によって返される値の文字列表現と比較されます。関数は、SET_TEXT_MODE(IGNORECASE)またはSET_TEXT_MODE(NOIGNORECASE)、および ASCII 文字セットと UTF-8 文字セットの両方で使用できます。
<text>.LT(<string> 接頭辞が文字列引数よりアルファベット順に小さい場合は、ブール型 TRUE 値を返します。接頭辞が文字列以外の値を返す場合、関数の引数は接頭辞によって返される値の文字列表現と比較されます。関数は、SET_TEXT_MODE(IGNORECASE)またはSET_TEXT_MODE(NOIGNORECASE)、および ASCII 文字セットと UTF-8 文字セットの両方で使用できます。
<text>.LE(<string>) プレフィックスがアルファベット順で文字列引数より小さいか等しい場合は、ブール型 TRUE 値を返します。接頭辞が文字列以外の値を返す場合、関数の引数は接頭辞によって返される値の文字列表現と比較されます。関数は、SET_TEXT_MODE(IGNORECASE)またはSET_TEXT_MODE(NOIGNORECASE)、および ASCII 文字セットと UTF-8 文字セットの両方で使用できます。

文字列の長さを計算する

この<text>.LENGTHオペレーションは、文字列の文字数 (バイト数ではない) に等しい数値を返します。

<text>.LENGTH

たとえば、特定の長さを超えるリクエスト URL を特定したい場合があります。次に、この例を実装する式を示します。

HTTP.REQ.URL.LENGTH < 500

文字列内の文字または要素の数を取った後、それらに数値演算を適用することができます。詳細については、「 高度なポリシー式:日付、時刻、および数値の操作」を参照してください。

テキストの大文字小文字の考慮、無視、変更

次の関数は、文字列内の文字の大文字小文字 (大文字または小文字) を操作します。

|機能|説明| |— |— | |<text>.SET_TEXT_MODE(IGNORECASE| NOIGNORECASE) |この関数は、すべてのテキスト操作で大文字と小文字の区別をオンまたはオフにします。 | |<text>.TO_LOWER|最大 2 キロバイト (KB) のテキストブロックのターゲットを小文字に変換します。ターゲットが 2 KB を超える場合は UNDEF を返します。たとえば、文字列「abcd:」は「abcd:」に変換されます。 | |<text>.TO_UPPER|ターゲットを大文字に変換します。ターゲットが 2 KB を超える場合は UNDEF を返します。たとえば、文字列「ABCD:」は「ABCD:」に変換されます。.|

文字列から特定の文字を取り除く

STRIP_CHARS (<string>) 関数を使用すると、高度なポリシー式のプレフィックス (入力文字列) によって返されるテキストから特定の文字を削除できます。引数で指定した文字のすべてのインスタンスが、入力文字列から削除されます。結果の文字列には、文字列をパターンセットと照合するために使用されるメソッドなど、任意のテキストメソッドを使用できます。

たとえば、 式CLIENT.UDP.DNS.DOMAIN.STRIP\_CHARS(".-\_")では、プレフィックス CLIENT.UDP.DNS.DOMAIN によって返されるドメイン名から、ピリオド(.)、ハイフン(-)、およびアンダースコア(_)がSTRIP\_CHARS(<string>)関数ですべて取り除かれます。 返されるドメイン名が「a.dom_ai_n-name」の場合、この関数は文字列「adomainname」を返します。

次の例では、結果の文字列を「listofdomains」というパターンセットと比較します。

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

注:STRIP_CHARS(<string>) 関数によって返される文字列の書き換えは実行できません。

次の関数は、指定された文字列入力の先頭と末尾から一致する文字を取り除きます。

機能 説明
<text>.STRIP_START_CHARS(s) 入力文字列の先頭から一致しない最初の文字が見つかるまで、一致する文字を取り除き、文字列の残りの部分を返します。削除したい文字は、引用符で囲んだ 1 つの文字列として指定する必要があります。たとえば、ヘッダーの名前が testLang で、:/en_us: がその値である場合、HTTP.RES.HEADER(“TestLang”).STRIP_START_CHARS(“:”) は、ヘッダーの値の先頭から最初の不一致文字 e が見つかるまで、指定された文字を取り除き、次の文字として返します。
<text>.STRIP_END_CHARS(s) 入力文字列の末尾から最初に見つかった一致しない文字までの一致する文字を取り除き、文字列の残りの部分を返します。削除したい文字は、引用符で囲んだ 1 つの文字列として指定する必要があります。たとえば、ヘッダーの名前が testLang で、:/en_us: がその値である場合、HTTP.RES.HEADER(“TestLang”).STRIP_START_CHARS(“:”) は、ヘッダーの値の最後から最初の不一致文字 s が見つかるまで、指定された文字を取り除き、:/_en_us を文字列として返します。

文字列を別の文字列に追加する

APPEND () 関数を使用すると、引数の文字列表現を、前の関数によって返される値の文字列表現に追加できます。上記の関数は、数値、符号なし長整数型、倍精度浮動小数点型、時刻値、IPv4 アドレス、または IPv6 アドレスを返す関数です。引数には、テキスト文字列、数値、符号なし長整数型、倍精度浮動小数点型、時刻値、IPv4 アドレス、または IPv6 アドレスを使用できます。結果の文字列値は、+ 演算子を使用して取得した文字列値と同じです。

テキストの基本操作