組み込み関数
StyleBook の式では、組み込み関数を使用できます。
たとえば、組み込み関数 str() を使用して、数値を文字列に変換できます。
str($parameters.order)
または、組み込み関数 int() を使用して、文字列を整数に変換できます。
int($parameters.priority)
以下は、StyleBook の式でサポートされている組み込み関数と、その使用方法の例です。
str()
str() 関数は、入力引数を文字列値に変換します。
許可される引数の型:
stringnumberTCP-portbooleanIP 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を返します。 -
$parameters.aがfalse、空、または存在しない場合、bool($parameters.a)関数は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:
置換を次のように定義した場合: 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() 関数は、2 つの数値を引数として取り、最初の引数を 2 番目の引数の累乗で表す数値を返します。
例:
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 と評価されます。
例:
置換関数を次のように定義したとします。
置換:
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:
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()
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: 要素のリスト。
この関数は、リスト内の各要素が map() 関数 (引数 1) を引数 2 の対応する要素に適用した結果であるリストを返します。
引数 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] であるとします。
-
組み込み関数 str を使用したマップ:
map(str, $parameters.nums)関数は["81", "82", "83"]を返します。map関数の結果は文字列のリストであり、各要素は入力リスト ($parameters.nums) の対応する要素にstr関数を適用することによって計算された文字列です。 -
置換関数を使用したマップ:
-
置換:
add-10(port): $port + 10 -
式:
map($substitutions.add-10, $parameters.nums)関数は数値のリスト[ 91, 92, 93 ]を返します。
-
この map 関数の結果は数値のリストであり、各要素は入力リスト ($parameters.nums) の対応する要素に置換関数 $substitutions.add-10 を適用することによって計算されます。
quotewrap()
quotewrap() 関数は、文字列を引数として取り、入力値の前後に二重引用符文字を追加した文字列を返します。
例:
quotewrap("ADM") 関数は "mas" を返します。
replace()
replace() 関数は 3 つの引数を取ります。
引数 1: 文字列
引数 2: 文字列またはリスト
引数 3: 文字列 (オプション)
この関数は、引数 1 内の引数 2 のすべての出現を引数 3 で置き換えます。
引数 3 が指定されていない場合、引数 1 から引数 2 のすべての出現が削除されます (つまり、空の文字列に置き換えられます)。
部分文字列を別の部分文字列に置き換えます。
-
replace('abcdef', 'def', 'xyz')関数はabcxyzを返します。defのすべての出現がxyzに置き換えられます。 -
replace('abcdefabc', 'def')関数はabcabcを返します。3 番目の引数がないため、
defは結果の文字列から削除されます。
文字列内で置き換えたい文字リストを指定します。
$parameters.spl_chars = ['@', '#', '!', '%']
このリストには、入力文字列で置き換える必要がある値が含まれています。
replace('An#example@to%replace!characters', $parameters.spl_chars, '_') 関数は An_example_to_replace_characters を返します。
出力文字列には、$parameters.spl_charsリストで指定された文字の代わりにアンダースコア (_`) が含まれます。
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() 関数は、RFC 3986 に従って URL エンコードされた引数が通常の文字列にデコードされた文字列を返します。
例:
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 を返します。
startswith()
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()
contains() 関数は、文字列が指定された部分文字列を含むかどうかを判断します。この関数には、2 つの必須文字列引数が必要です。
contains(str, sub_str)
この関数は、部分文字列 (sub_str) が文字列 (str) 内のどこかに含まれている場合に True を返します。
例:
-
contains('Citrix', 'tri')関数はTrueを返します。 -
contains('Citrix', 'Ci')関数はTrueを返します。 -
contains('Citrix', 'ti')関数はFalseを返します。
substring()
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 文字を含む部分文字列を抽出します。
この記事の概要
- 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()
- startswith()
- endswith()
- contains()
- substring()