Citrix ADC

对文本的基本操作

对文本的基本操作包括字符串匹配、计算字符串长度和控制区分大小写的操作。您可以在作为参数传递给表达式的字符串中包含空格,但字符串不能超过 255 个字符。

字符串比较函数

下表列出了基本的字符串匹配操作,其中函数返回布尔值 TRUE 或 FALSE。

功能 说明
<text>.CONTAINS(<string>) 如果目标包含,则返回布尔值 TRUE <string>。示例:http.req.url.contains(".jpeg")
<text>.EQ(<string>) 如果目标与精确匹配,则返回布尔值 TRUE <string>。例如,以下表达式为主机名为 “myhostabc” 的 URL 返回布尔值 TRUE: http.req.url.hostname.eq("myhostabc")
<text>.STARTSWITH(<string>) 如果目标以开头,则返回布尔值 TRUE <string>。例如,以下表达式为主机名为 “myhostabc” 的 URL 返回布尔值 TRUE: http.req.url.hostname.startswith("myhost")
<text>.ENDSWITH(<string>) 如果目标以 <string> 结尾,则返回布尔值 TRUE。例如,以下表达式为主机名为 “myhostabc” 的 URL 返回布尔值 TRUE: http.req.url.hostname.endswith("abc")
<text>.NE(<string>) 如果前缀不等于字符串参数,则返回布尔值 TRUE。如果前缀返回非字符串值,则函数参数将与前缀返回的值的字符串表示形式进行比较。您可以将这些函数与 SET_TEXT_MODE(IGNORECASE) or SET_TEXT_MODE(NOIGNORECASE) 以及 ASCII 和 UTF-8 字符集一起使用。
<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(".-\_") 中,STRIP\_CHARS(<string>) 函数从前缀 CLIENT.UDP.DNS.DOMAIN 返回的域名中去除所有句点 (.)、连字符 (-) 和下划线 (_)。如果返回的域名是 “a.dom_ai_n-name”,则该函数将返回字符串 “adomainname”。

在以下示例中,将生成的字符串与名为 “listofdomains” 的模式集进行比较:

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

注意: 不能对 STRIP_CHARS(<string>) 函数返回的字符串执行重写操作。

以下函数从给定字符串输入的开头和结尾去除匹配的字符。

功能 说明
<text>.STRIP_START_CHARS(s) 从输入字符串的开头去除匹配的字符,直到找到第一个不匹配的字符,然后返回字符串的其余部分。必须在引号内将要剥离的字符指定为单个字符串。例如,如果标头的名称是 testLang 并且 :/en_us:is its value,HTTP.RES.HEADER(“TestLang”).STRIP_START_CHARS(“:”) 从标头值的开头去除指定的字符,直到找到第一个不匹配的字符 e 并返回字符串。
<text>.STRIP_END_CHARS(s) 找到从输入字符串末尾到第一个不匹配字符的片段匹配字符,然后返回字符串的其余部分。必须在引号内将要剥离的字符指定为单个字符串。例如,如果标头的名称是 testLang 且:/en_us: 是它的值,则 HTTP.RES.HEADER (“testLang”) .STRIP_START_CHARS (“:”) 从标头值的末尾去除指定的字符,直到找到第一个不匹配的字符 s 并返回:/_en_us 作为字符串。

将字符串附加到另一个字符串

您可以使用 APPEND () 函数将参数的字符串表示形式附加到前一函数返回的值的字符串表示形式。上述函数可以是返回数字、无符号长整型、双精度型、时间值、IPv4 地址或 IPv6 地址的函数。参数可以是文本字符串、数字、无符号长整型、双精度型、时间值、IPv4 地址或 IPv6 地址。生成的字符串值与使用 + 运算符获取的相同字符串值。

对文本的基本操作