すべてのプロダクト
Search
ドキュメントセンター

Server Load Balancer:文字列関数

最終更新日:Sep 14, 2024

このトピックでは、文字列関数の構文、機能、パラメーター、および戻り値について説明します。 このトピックでは、これらの関数の例も示します。

|concat|形式|アッパー||レン|バイト|match_re|capture_re|gsub_re|スプリット|split_as_key|tohex|トビン|tostring|tochar|リバース|検索|トリム

substr

項目

説明

構文

substr(s, i, j)

説明

文字列から部分文字列を抽出します。

パラメーター

  • s: 部分文字列を抽出する文字列。

  • i: 1から数えて、抽出が開始される位置。 値-1は、文字列の右端の文字を指定します。 データ型: 整数。

  • j: 1から数えて、抽出が終了する位置。 値-1は、文字列の右端の文字を指定します。 データ型: 整数。

戻り値

サブストリングs[i, j]で指定されたソース文字列から抽出されるsが返されます。

例:

次の方法を使用して、ファイルがM3U8ファイルであるかどうかを判断できます。

  • 方法1:

    if eq(substr($uri, -5, -1), '.m3u8') {
        say(concat($uri, ' is .m3u8'))
    }
  • 方法2:

    uri_len = len($uri)
    if eq(substr($uri, -5, uri_len), '.m3u8') {
        say(concat($uri, ' is .m3u8'))
    }

concat

項目

説明

構文

concat(s1, ...)

説明

文字列を連結します。

パラメーター

連結する文字列。 1つ以上の文字列を指定できます。 数値がサポートされています。

戻り値

連結された文字列。

例:

次の方法を使用して、ファイルがM3U8ファイルであるかどうかを判断できます。

  • 方法1:

    if eq(substr($uri, -5, -1), '.m3u8') {
        say(concat($uri, ' is .m3u8'))
    }
  • 方法2:

    uri_len = len($uri)
    if eq(substr($uri, -5, uri_len), '.m3u8') {
        say(concat($uri, ' is .m3u8'))
    }

フォーマット

項目

説明

構文

フォーマット (fmt, · · ·)

説明

1つ以上のパラメータの値をフォーマットします。 format文字列は最初のパラメーターで、文字列を指定する必要があります。 format文字列は、ISO Cプログラミング言語の関数で使用されるsprintfパラメーターの仕様に従います。

fmtで指定されたフォーマット文字列の構文は、%[parameter][flag][field width][precision]specifierです。

%%: prints literal percentage signs (%). 
%c: converts integers into ASCII characters. 
%d: coverts integers into decimal numbers. 
%f: converts N-precision numbers into floating point numbers. 
%o: converts integers into octal numbers. 
%s: converts integers into strings. 
%x: converts integers into hexadecimal numbers in lowercase letters. 
%X: converts integers into hexadecimal numbers in uppercase letters. 

パラメーター

  • fmt: 文字列型。 フォーマット文字列を指定します。

  • パラメータの可変数: 任意の型。

戻り値

文字列です。

例:

say(concat('format:', format('%%%s$%.2s$%s$%c$%d$%2.2f$%.2o$%x$%X', 'format', 3.1415926, true, 95, 3.1415926, 3.1415926, 3.1415926, 10, 10)))

出力:

format:%format$3.$true$_$3$3.14$03$a$A

upper

項目

説明

構文

説明

文字列を大文字に変換します。

パラメーター

s: 変換する文字列。

戻り値

sパラメーターで指定された文字列 (大文字) 。

例:

mystr = 'Hello, AScript'
say(upper(mystr))
say(lower(mystr))

出力:

HELLO, ASCRIPT
hello, ascript

lower

項目

説明

構文

lower(s)

説明

文字列を小文字に変換します。

パラメーター

s: 変換する文字列。

戻り値

sパラメーターで指定された小文字の文字列。

例:

mystr = 'Hello, AScript'
say(upper(mystr))
say(lower(mystr))

出力:

HELLO, ASCRIPT
hello, ascript

len

項目

説明

構文

len(s)

説明

文字列の長さを照会します。

パラメーター

s: クエリする文字列。

戻り値

sパラメーターで指定された文字列の長さ。 データ型: 整数。

例:

次の方法を使用して、ファイルがM3U8ファイルであるかどうかを判断できます。

  • 方法1:

    if eq(substr($uri, -5, -1), '.m3u8') {
        say(concat($uri, 'is .m3u8'))
    } 
  • 方法2:

    uri_len = len($uri)
    if eq(substr($uri, -5, uri_len), '.m3u8') {
        say(concat($uri, ' is .m3u8'))
    }

バイト

項目

説明

構文

説明

文字のASCII値を照会します。

パラメーター

c: ASCII値を照会する文字。 指定できる文字は1文字だけです。

戻り値

指定した文字のASCII値。 データ型: numeric。

例:

say(byte('a'))
say(byte('A'))

出力:

97
65 

match_re

項目

説明

構文

match_re(s, p [, o])

説明

正規表現マッチングにPerl互換正規表現 (PCRE) エンジンを使用します。 詳細については、「PCRE構文」をご参照ください。

パラメーター

  • s: 一致させたい文字列。 データ型: 文字列。

  • p: マッチングの正規表現。 データ型: 文字列。

  • o: 正規表現エンジン。 データ型: 文字列。 このパラメーターはオプションです。

戻り値

文字列が正規表現と一致する場合、trueが返されます。 それ以外の場合、falseが返されます。

例:

url = concat('http://', $host, $uri)
m1 = match_re(url, 'http://.*\.dslex\.com/.*')
m2 = match_re(url, '^http://.*\.alibaba\.com\.cn/.*\.d\\.html(\?.*)?$')
m3 = match_re(url, '^http://.*.test.dslex.com/.*\.d\.html(\?.*)?$')
m4 = match_re(url, '^http://.*\.alibaba\.com\.cn/zt_d/')
m5 = match_re(url, '^http://tech.alibaba.com.cn/zt_d/we2015/?$')
m6 = match_re($args, 'from=wap1$')
m7 = match_re($args, 'from=comos1$')

if and(m1, or(m2, m3), not(m4), not(m5), or(not(m6), not(m7))) {
    add_rsp_header('USER-DEFINED-1', 'hit1')
    add_rsp_header('USER-DEFINED-2', 'hit2')
}                                                                                                                                                        

capture_re

項目

説明

構文

capture_re(s, p [,init])

説明

文字列の一致をキャプチャし、一致する部分文字列を返します。 PCREの詳細については、「PCRE構文」をご参照ください。

パラメーター

  • s: 一致させたい文字列。 データ型: 文字列。

  • p: マッチングの正規表現。 データ型: 文字列。

  • init: 1から数えてマッチングを開始する位置。 データ型: 整数。

戻り値

文字列が正規表現と一致する場合、辞書型の一致する部分文字列が返されます。 それ以外の場合、空の辞書が返されます。

例:

pcs = capture_re($request_uri,'^/([^/]+)/([^/]+)([^?]+)\?(.*)')
sec1 = get(pcs, 1)
sec2 = get(pcs, 2)
sec3 = get(pcs, 3)
if or(not(sec1), not(sec2), not(sec3)) {
   add_rsp_header_imm('X-TENGINE-ERROR', 'auth failed - missing necessary uri set')
   exit(403)
}
digest = md5(concat(sec1, sec3))
if ne(digest, sec2) {
    add_rsp_header_imm('X-TENGINE-ERROR', 'auth failed - invalid digest')
    exit(403)
}                                                                                                                                              

gsub_re

項目

説明

構文

gsub_re(subject, regex, replace [,option])

説明

文字列のすべての一致を置き換え、置き換え後の文字列を返します。 PCREの詳細については、「PCRE構文」をご参照ください。

パラメーター

  • subject: 一致させたい文字列。 データ型: 文字列。

  • regex: 正規表現。 データ型: 文字列。

  • replace: 置換用の文字列。 データ型: 文字列。

    一致する部分文字列を使用して、replaceパラメーターを指定できます。

    • $0: regexに一致するすべての部分文字列を指定します。

    • $N: regexのN番目の括弧付き部分式 () に一致する部分文字列を指定します。

  • option: 正規表現エンジン。 データ型: 文字列。 このパラメーターはオプションです。

戻り値

この関数は、指定されたsubjectパラメーターで指定されたregexパラメーターと一致するすべての部分文字列をreplaceパラメーターで指定された部分文字列に置き換え、置き換え後の文字列を返します。

例:

subject = 'Hello, Es'
regex = '([a-zA-Z])[a-z]+'
replace = '[$0,$1]'
add_rsp_header('X-DEBUG-GSUB-RE', gsub_re(subject, regex, replace))                                                                                                                         

出力:

X-DEBUG-GSUB-RE: [Hello,H], [Es,E] 

split

項目

説明

構文

split(s [,sep])

説明

文字列を部分文字列の配列に分割し、配列を返します。

パラメーター

  • s: 分割する文字列。 データ型: 文字列。

  • sep: 文字列を分割するために使用されるセパレータ。 データ型: 文字列。

戻り値

ディクショナリ型のキーと値のペアの配列。 keyパラメーターの値は、1から始まる数値です。たとえば、[1]=xx、[2]=yyです。 sepが空の場合、文字列は空白文字で分割されます。 空白文字には、スペース文字とタブ文字 (\t) が含まれます。

例:

if $arg_from {
    t = split($arg_from, ',')
    if get(t, 1) {
        say(concat('[1]=', get(t, 1)))
    }
    if get(t, 2) {
        say(concat('[2]=', get(t, 1)))
    }
}                                                                                                                               

リクエスト:

?from=xx1,xx2,xx3

レスポンス:

[1]=xx1
[2]=xx1 

split_as_key

項目

説明

構文

split_as_key(s [,sep])

説明

文字列を部分文字列の配列に分割し、配列を返します。

パラメーター

  • s: 分割する文字列。 データ型: 文字列。

  • sep: 文字列を分割するために使用されるセパレータ。 データ型: 文字列。

戻り値

レスポンスパラメーターは、split() 関数と同じ方法で返されます。 ただし、keyパラメーターは、各分割要素にちなんで要素1要素2という名前が付けられます。

例:

def echo_each(k, v, u) {
    s = concat(k, '=', v, ' u=', get(u, 1))
    say(s)
}
if $arg_from {
    t = split_as_key($arg_from, ',')
    foreach(t, echo_each, ['hi,ascript'])
}                                                                                                                             

リクエスト:

?from=xx1,xx2,xx3

レスポンス:

xx2=xx2 u=hi,ascript
xx1=xx1 u=hi,ascript
xx3=xx3 u=hi,ascript

tohex

項目

説明

構文

tohex(s)

説明

文字列を16進文字列に変換します。

パラメーター

s: 変換する文字列。

戻り値

sパラメーターで指定された文字列から変換された16進文字列。

例:

digest = sha1('xxxx')
add_rsp_header('X-AScript-TOHEX', tohex(digest))                                                                                                                            

の出力:

X-AScript-TOHEX:4ad583af22c2e7d40c1c916b2920299155a46464 

トビン

項目

説明

構文

tobin(str)

説明

16進文字列をASCII文字列に変換します。

パラメーター

str: 変換する16進文字列。 大文字と小文字は区別されません。

戻り値

文字列です。

例:

say(concat('tobin:', tobin('2F2F')))                                                                                                                              

出力:

tobin://

tostring

項目

説明

構文

tostring(a)

説明

任意の型のデータを文字列に変換します。

パラメーター

a: 変換するデータ。 データ型: 任意の型。

戻り値

パラメーターで指定された値から変換され文字列。

例:

s = tostring(123)
add_rsp_header('X-DSL-TOSTRING', s)                                                                                                                      

の出力:

X-DSL-TOSTRING: 123

tochar

項目

説明

構文

tochar(n1、n2、...)

説明

  • 1つ以上の内部整数を文字列に変換します。 例えば、48は文字「0」に対応する。

  • 返される文字列の長さは、指定されたパラメーターの数に基づいています。

パラメーター

nX: 変換する整数。 1つ以上の整数を指定できます。

戻り値

整数から変換された文字列。

例:

add_rsp_header('X-DSL-TOCHAR', tochar(97))
add_rsp_header('X-DSL-TOCHAR', tochar(97, 98), true)
//Output: A response header is added.
//X-DSL-TOCHAR: a
//X-DSL-TOCHAR: ab

if $arg_filename {
    hn = 'Content-Disposition'
    add_rsp_header('Content-Disposition', concat('attachment;filename=', tochar(34), filename, tochar(34)))

}                                                                                                                                  

出力: レスポンスヘッダーが追加されます

Content-Disposition: attachment;filename="The value of the filename parameter" 

reverse

項目

説明

構文

説明

文字列を反転します。

パラメーター

str: 反転する文字列。

戻り値

指定された文字列から反転した文字列。 データ型: CHAR。

例:

say(reverse('hello'))

出力:

olleh

検索

項目

説明

構文

string.find (s, substr, pos)

説明

指定した文字列で部分文字列を検索します。

パラメーター

  • s: 検索する文字列。

  • substr: 検索する部分文字列。

  • pos: 検索を開始する位置。 データ型: numeric。 このパラメーターはオプションです。 負の整数を指定できます。 デフォルト値は 1 です。

戻り値

  • 指定された部分文字列が見つかった場合、配列が返されます。

    • インデックス1は、検索が開始される位置を示す。

    • インデックス2は、探索が終了した位置を示す。

  • 指定された部分文字列が見つからない場合は、空の配列が返されます。

例:

 str = 'hello dsl'
 add_rsp_header('string-find()-start', tostring(get(find(str, 'dsl'), 1)))
 str = 'hello dsl 12'
 add_rsp_header('string-find()-end', tostring(get(find(str, 'dsl'), 2)))
 str = 'hello dsl'
 add_rsp_header('string-find()-tail-start', tostring(get(find(str, 'dsl', -6), 1)))
 str = 'hello dsl 12'
 add_rsp_header('string-find()-tail-end', tostring(get(find(str, 'dsl', -6), 2)))

出力:

string-find()-start:7
string-find()-end:9
string-find()-tail-start:7
string-find()-tail-end:9

トリム

項目

説明

構文

trim(s, [, loc])

説明

sパラメーターで指定した文字列の先頭または末尾にあるすべての空白文字を削除し、指定した空白文字が削除された文字列を返します。

パラメーター

  • s: 文字列。

  • loc: このパラメーターはオプションです。 デフォルト値: both。 有効な値:

    • both: 文字列の前後の空白文字を削除します。

    • left: 文字列の前の空白文字のみを削除します。

    • right: 文字列の後の空白文字のみを削除します。

戻り値

指定された空白文字が削除された文字列。

例:

say(concat('trim():', trim(' abcd ')))
say(concat('trim(left):', trim(' abcd ', 'left')))
say(concat('trim(right):', trim(' abcd ', 'right')))

Output:

trim():abcd
trim(left):abcd
trim(right): abcd