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>) 如果目标以结尾,则返回布尔值 TRUE <string>。例如,以下表达式为主机名为“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:”.|

从字符串中删除特定字符

您可以使用 STRP_CHARS (<string>) 函数从默认语法表达式前缀(输入字符串)返回的文本中删除特定字符。您在参数中指定的字符的所有实例将从输入字符串中删除。您可以在生成的字符串上使用任何文本方法,包括用于将字符串与模式集匹配的方法。

例如,在表达式客户端 .UDP.DNS.Domain.Strip_CHARS (“.-_”) 中,Strip_CHARS (<string>) 函数从前缀客户端 .UDP.DNS.Domain 返回的域名中剥离所有句点 (.)、连字符 (-) 和下划线 (_)。如果返回的域名是“.dom_ai_n-name”,则该函数返回字符串“adomainname”。

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

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 并返回 en_us: 作为字符串。
<text>.STRIP_END_CHARS(s) 将匹配字符从输入字符串末尾剥离到第一个不匹配字符,并返回字符串的其余部分。必须指定要去除的字符作为引号中的单个字符串。例如,如果标头的名称是 TestLang,并且 :/en_us:is its value,HTTP.RES.HEADER(“TestLang”).STRIP_START_CHARS(“:”) 将指定的字符从标头值的末尾删除,直到找到第一个不匹配的字符 s 并返回 :/_en_us 作为字符串。

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

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

文本的基本操作