組み込み関数
組み込み関数はStyleBookの式で使用されます。
たとえば、組み込み関数str()
を使用して、数値を文字列に変換できます。
str($parameters.order)
または、組み込み関数int()
を使用して、文字列を整数に変換することもできます。
int($parameters.priority)
以下は、StyleBookの式でサポートされる組み込み関数とその使用例の一覧です。
str()
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()
このint()
関数は、文字列、数値、IP アドレス、またはtcpport
を引数として取り、整数を返します。
例:
-
int("10")
関数は10
を返します。 -
int(10)
関数は10
を返します。 -
int(ip('0.0.4.1'))
関数は1025
を返します。
bool()
bool()
関数は、引数として任意の型を取ります。引数の値がfalse
、空の場合、または存在しない場合、この関数はfalse
を返します。
それ以外の場合は、true
を返します。
例:
-
bool(true)
関数はtrue
を返します。 -
bool(false)
関数はfalse
を返します。 -
bool($parameters.a)
関数は、$parameters.a
がfalse
、空、または存在しない場合にfalse
を返します。
len()
len()
関数は、引数として文字列またはリストを受け取り、文字列内の文字数またはリスト内の項目数を返します。
例 1:
次のように置換を定義した場合、
items: ["123", "abc", "xyz"]
len($substitutions.items)
関数は 3
を返します
例 2:
len("NetScaler ADM")
関数は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()
関数は、引数として数値を取り、バイナリ形式で数値を表す文字列を返します。
式の例:
bin(100)
関数は0b1100100
を返します。
oct()
oct()
関数は、引数として数値を取り、8 進形式で数値を表す文字列を返します。
式の例:
oct(100)
関数は0144
を返します。
hex()
hex()
関数は、引数として数値を取り、16 進数形式で数値を表す小文字の文字列を返します。
式の例:
hex(100)
関数は0x64
を返します。
lower()
lower()
関数は、引数として文字列を受け取り、小文字で同じ文字列を返します。
例:
lower("ADM")
関数はadm
を返します。
upper()
upper()
関数は、引数として文字列を受け取り、大文字で同じ文字列を返します。
例:
upper("NetScaler ADM")
関数はNetScaler ADM
を返します。
sum()
このsum()
関数は、数値のリストまたはtcpports
を引数として取り、リスト内の数値の合計を返します。
例 1:
置換を次のように定義した場合: 置換:
list-of-numbers = [11, 22, 55]
sum($substitutions.list-of-numbers)
関数は88
を返します。
例 2:
$parameters.ports
が[80, 81, 82]
の場合 、sum($parameters.ports)
関数は243
を返します 。
pow()
pow()
関数は、引数として2つの数字を取り、2番目の1の累乗に上げられた最初の引数を表す数値を返します。
例:
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()
exists()
関数は、任意の型の引数を受け取り、ブール値を返します。入力に値がある場合戻り値はTrue
です。戻り値は、入力引数が値を持たない場合 (つまり、値がない場合)False
です。
$parameters.monitor
はオプションのパラメータであるとします。構成パックの作成時にこのパラメーターに値を指定すると、「存在する」 という関数が($parameters.monitor)
返さTrue
れます。
それ以外の場合は、False
を返します。
filter()
filter()
関数は 2 つの引数を取ります。
引数1:1つの引数を受け取ってブーリアン型の値を返す置換関数です。
引数2:一覧です。
この関数は、最初の引数の置換関数に渡されたときに各要素がTrue
に評価される元のリストのサブセットを返します。
例:
次のような置換関数を考えてみましょう。
Substitutions:
x(a): $a != 81
この関数は、入力値が81
と等しくない場合にTrueを返します。それ以外の場合は、False
を返します。
$parameters.ports
を[81, 80, 81, 89]
と想定します。
filter($substitutions.x, $parameters.ports)
は、リストからすべての81
のオカレンスを削除して[80, 89]
を返します 。
if-then-else()
if-then-else()
関数は 3つの引数を取ります。
引数1:ブール式
引数2:任意の式
引数3:任意の式(オプション)
引数 1 の式がTrue
と評価された場合、関数は引数 2 として指定された式の値を返します。
それ以外の場合は、引数3が指定されている場合、この関数は引数3の式の値を返します。
引数 3 が指定されていない場合、関数はno
を返します。
例 1:
$parameters.servicetype
が値HTTP
を持っている場合、if-then-else($parameters.servicetype == HTTP, 80, 443)
関数は80
を返します 。それ以外の場合、関数は443
を返します。
例 2:
if-then-else($parameters.servicetype == HTTP, $parameters.hport, $parameters.sport)
関数は、$parameters.servicetype
がHTTP
値を持っている場合、$parameters.hport
の値を返します 。
それ以外の場合、関数は$parameters.sport
の値を返します。
サンプル 3:
$parameters.servicetype
が値HTTP
を持っている場合、if-then-else($parameters.servicetype == HTTP, 80)
は80
を返します 。
それ以外の場合、関数は値を返しません。
join()
join()
関数は、次の 2 つの引数を取ります。
引数 1: 数値、tcp-ports
、文字列、または IP アドレスのリスト
引数2:区切り文字列(オプション)
この関数は、引数 1 として指定されたリストの要素を文字列に結合します。各要素は、引数 2 として指定された区切り文字列で区切られます。引数 2 が指定されていない場合、リスト内の要素は 1 つの文字列として結合されます。
例:
-
$parameters.ports
は[81, 82, 83]
です。-
デリミタ引数付き:
join($parameters.ports, '-')
関数は81-82-83
を返します。 -
デリミタ引数なし:
join($parameters.ports)
関数は818283
を返します。
-
split()
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']
を返します。この関数は、連続空間を 1 つのスペースとみなします。
map()
map()
関数は 2 つの引数を取ります。
引数1:任意の関数
引数2:要素の一覧
この関数は、リスト内の各要素が引数 2の対応する要素に関数map()
(引数 1) を適用した結果であるリストを返します。
引数1で許可される関数は次のとおりです。
-
1つの引数を取る組み込み関数:
base64.encode, base64.decode, bin, bool, exists, hex, int, ip, len, lower, upper, oct, quotewrap, str, trim, upper, url.encode, url.decode
-
1つ以上の引数を受け取る置換関数。
例:
$parameters.numsが[81, 82, 83]
だと仮定します。
-
Map using a built-in function, str
map(str, $parameters.nums)
関数は["81", "82", "83"]
を返しますmap関数の結果は文字列の一覧であり、文字列の各要素は、入力した一覧($parameters.nums)の対応する要素にstr関数を適用して処理されています。
-
置換関数を使用したmap
-
Substitutions:
add-10(port): $port + 10
-
表現:
map($substitutions.add-10, $parameters.nums)
関数は、数値のリストを返します。[ 91, 92, 93 ]
-
このマップ関数の結果は、数値のリストです。各要素は、入力リスト($parameters.nums)
内の対応する要素に置換関数$substitutions.add-10
を適用することによって計算されます。
quotewrap()
quotewrap()
関数は、引数として文字列を受け取り、入力値の前後に二重引用符を追加した後に文字列を返します。
例:
quotewrap("ADM")
関数は "mas"
を返します
replace()
replace()
関数は、次の 3 つの引数を取ります。
引数 1: a string
または以下の組み込み型のリスト:
string
number
ipaddress
tcp-port
boolean
引数 2: 単一の値、または引数 1 で指定された型と一致する型を持つ値のリスト
引数 3: 引数 1 で指定されたものと同じ型の単一値 (オプション)
replace()
関数は、引数 2 のすべての出現箇所を引数 1 の引数 3 に置き換えます。
引数 3 が指定されていない場合、引数 2 のすべての出現箇所が引数 1 から削除されます。
例:
-
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()
関数は、入力文字列から先頭と末尾の空白を取り除いた文字列を返します。
例:
trim(' abc ')
関数はabc
を返します。
truncate()
truncate()
関数は、次の 2 つの引数を取ります。
引数1:文字列
引数2:数字
この関数は、引数 1 の入力文字列を引数 2 で指定された長さに切り捨てた文字列を返します。
例:
truncate('NetScaler ADM', 6)
はCitrix
を返します。
distinct()
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
を返します。
is-ipv4 ()
is-ipv4()
関数は、引数として IP アドレスを受け取り、IP アドレスが IPv4 形式の場合はブール値True
を返します。
is-ipv4(10.10.10.10)
関数は True
を返します
is-ipv6 ()
is-ipv6()
関数は、引数として IP アドレスを受け取り、IP アドレスが IPv6形式の場合はブール値True
を返します。
is-ipv6(2001:DB8::)
関数は True
を返します
startsWwith ()
startswith()
関数は、文字列が指定されたプレフィックスで始まるかどうかを決定します。この関数には、2 つの必須文字列引数が必要です。
startswith(str, sub_str)
この関数は、文字列(str
)が部分文字列(sub_str
)で始まる ときにTrue
を返します。
例:
-
startswith('Citrix', 'Ci')
関数はTrue
を返します。 -
startswith('Citrix', 'iC')
関数はFalse
を返します -
startswith('Citrix', 'Ab')
関数はFalse
を返します
endswith ()
endswith()
関数は、文字列が指定された接尾辞で終わるかどうかを決定します。この関数には、2 つの必須文字列引数が必要です。
endswith(str, sub_str)
この関数は、文字列(str
)が部分文字列(sub_str
)で終わる ときにTrue
を返します。
例:
-
endswith('Citrix', 'ix')
関数はTrue
を返します。 -
endswith('Citrix', 'Ix')
関数はFalse
を返します。 -
endswith('Citrix', 'ab')
関数はFalse
を返します。
() を含む
contains()
関数は、文字列に指定された部分文字列が含まれているかどうかを判定します。この関数には、2 つの必須文字列引数が必要です。
contains(str, sub_str)
この関数は、substring (sub_str
) が文字列 (str
) 内のどこかに含まれている場合に、True
を返します。
例:
-
contains('Citrix', 'tri')
関数はTrue
を返します。 -
contains('Citrix', 'Ci')
関数はTrue
を返します。 -
contains('Citrix', 'ti')
関数はFalse
を返します
部分文字列 ()
substring()
関数を使用して、文字列から部分文字列を抽出します。
substring(str, start_index, end_index)
この関数には、2 つの必須引数と 1 つのオプションの整数引数が必要です。
-
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
引数に負の値を指定します。この例では、関数は、文字列の最後の 3 文字を含む部分文字列を抽出します。
複数 ()
multiple()
関数は、次の 2 つの引数を取ります。
引数 1: a number
、string
、boolean
、ipaddress
、tcp-port
、またはpassword
引数 2: a 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]
を返します。
この記事の概要
- str()
- int()
- bool()
- len()
- min()
- max()
- bin()
- oct()
- hex()
- lower()
- upper()
- sum()
- pow()
- ip()
- base64.encode()
- base64.decode()
- exists()
- filter()
- if-then-else()
- join()
- split()
- map()
- quotewrap()
- replace()
- trim()
- truncate()
- distinct()
- url.encode()
- url.decode()
- is-ipv4 ()
- is-ipv6 ()
- startsWwith ()
- endswith ()
- () を含む
- 部分文字列 ()
- 複数 ()