内置函数

Last published : Oct 06, 2026
StyleBook 中的表达式使用内置函数。
例如,您可以使用内置函数 str() 将数字转换为字符串。
str($parameters.order)
或者,您可以使用内置函数 int() 将字符串转换为整数。
int($parameters.priority)
以下是 StyleBook 表达式中支持的内置函数列表及其使用示例:

字符串()

str() 函数将输入参数转换为字符串值。
允许的参数类型:
  • string
  • number
  • TCP-port
  • boolean
  • IP address
示例:
  • "set-" + str(10) 函数返回 "set-10"。
  • str(10) 函数返回 10。
  • str(1.1.1.1) 函数返回 1.1.1.1。
  • str(T rue) 函数返回 "T rue"。
  • str(ADM) 函数返回 "mas"。

整数()

int() 函数将字符串、数字、IP 地址或 tcpport 作为参数,并返回一个整数。
示例:
  • int("10") 函数返回 10。
  • int(10) 函数返回 10。
  • int(ip('0.0.4.1')) 函数返回 1025。

布尔()

bool() 函数接受任何类型作为参数。如果参数值为 false、空或缺失,此函数返回 false。
否则,它返回 true。
示例:
  • bool(true) 函数返回 true。
  • bool(false) 函数返回 false。
  • 如果 $parameters.a 为 false、空或缺失,则 bool($parameters.a) 函数返回 false。

len() 函数

len() 函数接受字符串或列表作为参数,并返回字符串中的字符数或列表中的项目数。
示例 1:
如果您按如下方式定义替换:
items: ["123", "abc", "xyz"]
len($substitutions.items) 函数返回 3
示例 2:
len("NetScaler Console") 函数返回 10。
示例 3:
如果 $parameters.vips 具有值 ['1.1.1.1', '1.1.1.2', '1.1.1.3'],则 len($parameters.vips) 函数返回 3。

min() 函数

函数 min() 接受列表、一系列数字或 tcp-ports 作为参数,并返回最小项。
一系列数字/TCP 端口的示例:
  • 函数 min(80, 100, 1000) 返回 80。
  • 函数 min(-20, 100, 400) 返回 -20。
  • 函数 min(-80, -20, -10) 返回 -80。
  • 函数 min(0, 100, -400) 返回 -400。
数字/TCP 端口列表的示例:
  • 支持 $parameters.ports 是 tcp-ports 的列表,其值为:[80, 81, 8080]。
    函数 min($parameters.ports) 返回 80。

max() (最大值)

函数 max() 接受列表、一系列数字或 tcp-ports 作为参数,并返回最大项。
一系列数字/TCP 端口的示例:
  • 函数 max(80, 100, 1000) 返回 1000。
  • 函数 max(-20, 100, 400) 返回 400。
  • 函数 max(-80, -20, -10) 返回 -10。
  • 函数 max(0, 100, -400) 返回 100。
数字/TCP 端口列表示例:
  • 支持 $parameters.ports 是 tcp-ports 的列表,其值为:[80, 81, 8080]。
    函数 max($parameters.ports) 返回 8080。

二进制()

函数 bin() 接受一个数字作为参数,并返回一个以二进制格式表示该数字的字符串。
表达式示例:
函数 bin(100) 返回 0b1100100。

八进制()

函数 oct() 接受一个数字作为参数,并返回一个以八进制格式表示该数字的字符串。
表达式示例:
函数 oct(100) 返回 0144。

十六进制()

函数 hex() 接受一个数字作为参数,并返回一个以十六进制格式表示该数字的小写字符串。
表达式示例:
hex(100) 函数返回 0x64。

小写()

lower() 函数将字符串作为参数,并返回小写形式的相同字符串。
示例:
lower("ADM") 函数返回 adm。

大写()

upper() 函数将字符串作为参数,并返回大写形式的相同字符串。
示例:
upper("NetScaler Console") 函数返回 NetScaler Console。

求和()

sum() 函数将数字列表或 tcpports 作为参数,并返回列表中数字的总和。
示例 1:
如果按如下方式定义替换: substitutions:
list-of-numbers = [11, 22, 55]
sum($substitutions.list-of-numbers) 函数返回 88。
示例 2:
如果 $parameters.ports 是 [80, 81, 82],则 sum($parameters.ports) 函数返回 243。

pow() (幂函数)

pow() 函数接受两个数字作为参数,并返回一个数字,该数字表示第一个参数的第二个参数次幂。
示例:
pow(3,2) 函数返回 9。

ip()

ip() 函数接受整数、字符串或 IP 地址作为参数,并根据输入值返回 IP 地址。
示例:
  • 在 ip 函数中指定 IP 地址:
    ip(3.1.1.1) 函数返回 3.1.1.1。
  • 在 ip 函数中指定字符串:
    ip('2.1.1.1') 函数返回 2.1.1.1
  • 在 ip 函数中指定整数:
    • ip(12) 函数返回 0.0.0.12。
    • 当您在 ip 函数中将整数指定为字符串时,它会返回输入的等效 IP 地址。
      ip('1025') 函数返回 0.0.4.1。
    此函数还支持整数加法和减法运算,并返回一个结果 IP 地址。
    • 加法:ip(1025) + ip(12) 函数返回 0.0.4.13。
    • 减法:ip('1025') - ip(12) 函数返回 0.0.3.245。
    • 组合加法和减法:ip('1.1.1.1') + ip('1.1.1.1') – ip(2) 返回 2.2.2.0。

base64.encode()

base64.encode() 函数接受一个字符串参数并返回 base64 编码的字符串。
示例:
base64.encode("abcd") 函数返回 YWJjZA==。

base64.decode()

base64.decode 函数接受一个 base64 编码的字符串作为参数并返回解码后的字符串。
示例:
base64.decode("YWJjZA==") 函数返回 abcd。

存在()

函数 exists() 接受任意类型的参数并返回一个布尔值。如果输入有任何值,则返回值为 True。如果输入参数没有值(即,无值),则返回值为 False。
假设 $parameters.monitor 是一个可选参数。如果在创建配置包时为此参数提供值,则 ($parameters.monitor) 函数返回 True。
否则,它返回 False。

过滤()

filter() 函数接受两个参数。
参数 1:一个替换函数,它接受一个参数并返回一个布尔值。
参数 2:一个列表。
该函数返回原始列表的一个子集,其中每个元素在传递给第一个 参数中的替换函数时,其计算结果为 True。
示例:
考虑一个替换函数,如下所示:
替换:
x(a): $a != 81
如果输入值不等于 81,则此函数返回 True。否则,它返回 False。
假设 $parameters.ports 是 [81, 80, 81, 89]。
filter($substitutions.x, $parameters.ports) 通过从列表中删除 81 的所有出现项来返回 [80, 89]。

如果-那么-否则()

函数 if-then-else() 接受三个参数。
参数 1: 布尔表达式
参数 2: 任意表达式
参数 3: 任意表达式 (可选)
如果参数 1 中的表达式评估为 True,则函数返回作为参数 2 提供的表达式的值。
否则,如果提供了参数 3,函数返回参数 3 中表达式的值。
如果未提供参数 3,函数返回 no。
示例 1:
if-then-else($parameters.servicetype == HTTP, 80, 443) 函数在 $parameters.servicetype 的值为 HTTP 时返回 80。否则,函数返回 443。
示例 2:
if-then-else($parameters.servicetype == HTTP, $parameters.hport, $parameters.sport) 函数在 $parameters.servicetype 的值为 HTTP 时返回 $parameters.hport 的值。
否则,函数返回 $parameters.sport 的值。
示例 3:
if-then-else($parameters.servicetype == HTTP, 80) 在 $parameters.servicetype 的值为 HTTP 时返回 80。
否则,该函数不返回任何值。

连接()

join() 函数接受两个参数:
参数 1:数字、tcp-ports、字符串或 IP 地址列表
参数 2:分隔符字符串(可选)
此函数将作为参数 1 提供的列表元素连接成一个字符串,其中每个元素由作为参数 2 提供的分隔符字符串分隔。如果未提供参数 2,则列表中的元素将连接成一个字符串。
示例:
  • $parameters.ports 是 [81, 82, 83]。
    • 带分隔符参数:
      join($parameters.ports, '-') 函数返回 81-82-83。
    • 不带分隔符参数:
      join($parameters.ports) 函数返回 818283。

分割()

split() 函数根据指定的分隔符将输入字符串拆分为多个列表。如果未指定分隔符或指定为空白 (''),则此函数将空格视作分隔符并将字符串拆分为列表。
示例:
  • split('Example_string_split', 's') 函数返回 ['Example_','tring_','plit']。
  • split('Example string split') 函数返回 ['Example','string','split']。
  • split('Example string split', '') 函数返回 ['Example','string','split']。
  • split('Example string') 函数返回 ['Example','string']。
    此函数将连续空格视为一个空格。

映射()

map() 函数接受两个参数;
参数 1:任何函数
参数 2:元素列表。
此函数返回一个列表,其中列表中的每个元素都是将 map() 函数(参数 1)应用于参数 2 中相应元素的结果。
参数 1 中允许的函数:
  • 接受一个参数的内置函数:
    base64.encode, base64.decode, bin, bool, exists, hex, int, ip, len, lower, upper, oct, quotewrap, str, trim, upper, url.encode, url.decode
  • 接受至少一个参数的替换函数。
示例:
假设 $parameters.nums 是 [81, 82, 83]。
  • 使用内置函数 str 进行映射
    map(str, $parameters.nums) 函数返回 ["81", "82", "83"]
    映射函数的结果是字符串列表,其中每个字符串元素都是通过对输入列表 ($parameters.nums) 中的相应元素应用 str 函数计算得出的。
  • 使用替换函数进行映射
    • 替换:
      add-10(port): $port + 10
    • 表达式:
      map($substitutions.add-10, $parameters.nums) 函数返回一个数字列表:[ 91, 92, 93 ]
此映射函数的结果是一个数字列表。每个元素都是通过对输入列表 ($parameters.nums) 中的相应元素应用替换函数 $substitutions.add-10 计算得出的。

引用包装()

quotewrap() 函数接受一个字符串作为参数,并在输入值前后添加双引号字符后返回一个字符串。
示例:
quotewrap("ADM") 函数返回 "mas"

替换()

函数 replace() 接受三个参数:
参数 1:以下内置类型之一的 string 或列表:
  • string
  • number
  • ipaddress
  • tcp-port
  • boolean
参数 2:单个值或值列表,其类型与参数 1 中指定的类型匹配
参数 3:与参数 1 中指定的类型相同的单个值(可选)
replace() 函数将参数 1 中参数 2 的所有出现替换为参数 3。
如果未提供参数 3,则参数 1 中参数 2 的所有出现都将被移除。
示例:
  • replace('abcdef', 'def', 'xyz') 函数返回 abcxyz。
    def 的所有出现都替换为 xyz。
  • replace('abcdefabc', 'def') 返回 abcabc。
    由于没有参数 3,def 将从结果字符串中移除。
  • replace('An#example@to%replace!characters', ['@', '#', '!', '%'], '_') 函数返回 An_example_to_replace_characters。
    输出字符串使用下划线 (_) 代替 ['@', '#', '!', '%'] 中指定的字符。
  • replace([10.10.10.1, 10.10.10.2, 10.10.10.3, 10.10.10.4], [10.10.10.2, 10.10.10.4]) 函数返回 [10.10.10.1, 10.10.10.3]。
    由于没有参数 3,10.10.10.2 和 10.10.10.4 将从结果 IP 地址列表中移除。
  • replace([8080, 8081, 8082, 8083, 8084], 8083, 80) 函数返回 [8080, 8081, 8082, 80, 8084]。
    8083 的所有出现都将替换为 80。

修剪()

trim() 函数返回一个字符串,其中输入字符串的前导和尾随空格已被去除。
示例:
trim(' abc ') 函数返回 abc。

截断()

truncate() 函数接受两个参数:
参数 1: 字符串
参数 2: 数字
该函数返回一个字符串,其中参数 1 中的输入字符串被截断为参数 2 指定的长度。
示例:
truncate('NetScaler Console', 6) 返回 Citrix。

去重()

distinct() 函数从列表输入中提取唯一项。
示例: 如果 $parameters.input_list 是 ['ADM', 'ADC', 'VPX', 'ADC', 'ADM', 'CPX'],则 distinct($parameters.input_list) 函数返回 ['ADM', 'ADC', 'VPX', 'CPX']。

url.encode()

url.encode() 函数返回一个字符串,其中字符根据 RFC 3986 使用 ASCII 字符集进行转换。
示例:
url.encode("a/b/c") 函数返回 a%2Fb%2Fc。

url.decode()

url.decode() 函数返回一个字符串,其中 URL 编码的参数根据 RFC 3986 解码为常规字符串。
示例:
url.decode("a%2Fb%2Fc") 函数返回 a/b/c。

是-IPv4()

is-ipv4() 函数将 IP 地址作为参数,如果 IP 地址是 IPv4 格式,则返回布尔值 True。
is-ipv4(10.10.10.10) 函数返回 True

是-ipv6()

is-ipv6() 函数将 IP 地址作为参数,如果 IP 地址是 IPv6 格式,则返回布尔值 True。
is-ipv6(2001:DB8::) 函数返回 True

以开头()

startswith() 函数确定字符串是否以给定前缀开头。此函数需要两个强制字符串参数。
startswith(str, sub_str)
当字符串 (str) 以子字符串 (sub_str) 开头时,此函数返回 True。
示例:
  • startswith('Citrix', 'Ci') 函数返回 True。
  • startswith('Citrix', 'iC') 函数返回 False
  • startswith('Citrix', 'Ab') 函数返回 False

以结尾()

endswith() 函数确定字符串是否以给定后缀结尾。此函数需要两个强制字符串参数。
endswith(str, sub_str)
当字符串 (str) 以子字符串 (sub_str) 结尾时,此函数返回 True。
示例:
  • 函数 endswith('Citrix', 'ix') 返回 True。
  • 函数 endswith('Citrix', 'Ix') 返回 False。
  • 函数 endswith('Citrix', 'ab') 返回 False。

包含()

函数 contains() 用于确定字符串是否包含给定子字符串。此函数需要两个强制字符串参数。
contains(str, sub_str)
当子字符串 (sub_str) 包含在字符串 (str) 中的任何位置时,此函数返回 True。
示例:
  • 函数 contains('Citrix', 'tri') 返回 True。
  • 函数 contains('Citrix', 'Ci') 返回 True。
  • 函数 contains('Citrix', 'ti') 返回 False

子串()

使用 substring() 函数从字符串中提取子字符串。
substring(str, start_index, end_index)
此函数需要两个强制参数和一个可选的整数参数。
  • str (强制)
  • start_index (强制)
  • end_index (可选)
此函数返回字符串 (str) 中位于指定索引位置之间的子字符串。如果未指定结束索引位置,则函数将从起始索引提取子字符串直到字符串末尾。
注意
当您指定 end_index 时,子字符串不包括 end_index 位置的字符。
示例:
  • substring('Citrix', 2) 函数返回 trix
  • substring('Citrix', 10) 函数返回 (")
    在此示例中,函数返回一个空字符串,因为它具有无效的 start_index 位置。
  • substring('Citrix', 2, 4) 函数返回 tr
    在此示例中,函数提取索引位置 2 到 4 之间的字符。
  • 函数 substring('Citrix', -3) 返回 rix
    如果要提取字符串末尾的字符,请为 start_index 参数指定一个负值。
    在此示例中,该函数提取包含字符串中最后三个字符的子字符串。

多重()

函数 multiple() 接受两个参数:
参数 1:一个 number、string、boolean、ipaddress、tcp-port 或 password
参数 2:一个 number
函数 multiple(argument1, argument2) 返回一个列表,其中包含参数 1 的多个副本。副本的数量等于传递给参数 2 的数字。
示例:
  • 函数 multiple(10.10.10.10, 3) 返回 [10.10.10.10, 10.10.10.10, 10.10.10.10]。
  • 函数 multiple(8080, 4) 返回 [8080, 8080, 8080, 8080]。

反转()

reverse() 函数接受一个项目列表作为参数,并返回一个包含相同项目但按相反顺序排列的列表。
参数可以是以下内置类型的列表:
  • string
  • number
  • ipaddress
  • ipnetwork
  • tcp-port
  • boolean
  • password
  • object
  • file
  • certfile
  • keyfile
  • certkey
示例:
  • reverse() 返回 。
  • reverse() 返回 。
  • reverse() 返回 。