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

CDN:文字列関数

最終更新日:Jan 24, 2024

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

substr

この関数の詳細を次の表に示します。
機能説明
構文substr(s, i, j)
説明文字列からパーツを抽出します。
パラメーター
  • s: 抽出する文字列。
  • i: ソース文字列で抽出を開始する位置 (1からカウント) 。 値-1は、文字列の右端の文字を指定します。 データ型: 整数。
  • j: ソース文字列内の抽出を終了する位置 (1からカウント) 。 値-1は、文字列の右端の文字を指定します。 データ型: 整数。
戻り値sで指定されたソース文字列から抽出された部分文字列s[i, j] を返します。
例:
// 注: ファイルがM3U8ファイルであるかどうかを判断するために使用される2つの方法。
if eq(substr($uri, -5, -1), '.m3u8') {
    say(concat($uri, 'is .m3u8'))
}

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

concat

この関数の詳細を次の表に示します。
機能説明
構文concat(s1, ...)
説明文字列を連結します。
パラメーター連結する文字列。 1つ以上の文字列を指定できます。 数値がサポートされています。
戻り値連結された文字列を返します。
例:
// 注: ファイルがM3U8ファイルであるかどうかを判断するために使用される2つの方法。
if eq(substr($uri, -5, -1), '.m3u8') {
    say(concat($uri, 'is .m3u8'))
}

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

upper

この関数の詳細を次の表に示します。
機能説明
構文アッパー
説明文字列を大文字に変換します。
パラメーターs: 変換する文字列。
戻り値sパラメーターで指定された文字列を大文字で返します。
例:
mystr = 'こんにちは、Dsl'
say(upper(mystr))
say(lower(mystr))
// 出力:
// ハロー、DSL
// hello, dsl 

lower

この関数の詳細を次の表に示します。
機能説明
構文lower(s)
説明文字列を小文字に変換します。
パラメーターs: 変換する文字列。
戻り値sパラメーターで指定された文字列を小文字で返します。
例:
mystr = 'こんにちは、Dsl'
say(upper(mystr))
say(lower(mystr))
// 出力:
// ハロー、DSL
// hello, dsl 

len

この関数の詳細を次の表に示します。
機能説明
構文len(s)
説明文字列の長さを照会します。
パラメーターs: 測定する文字列。
戻り値sパラメーターで指定された文字列の長さを返します。 データ型: 整数。
例:
// 注: ファイルがM3U8ファイルであるかどうかを判断するために使用される2つの方法。
if eq(substr($uri, -5, -1), '.m3u8') {
    say(concat($uri, 'is .m3u8'))
}

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

バイト

この関数の詳細を次の表に示します。
機能説明
構文バイト (c)
説明文字のASCII値を照会します。
パラメーターc: ASCII値を照会する文字。 指定できる文字は1文字だけです。
戻り値指定した文字のASCII値を返します。 データ型: numeric。
例:
say(byte('a'))
say (バイト ('A'))
// 出力: 97
// 65 

match_re

この関数の詳細を次の表に示します。
機能説明
構文match_re(s, p [, o])
説明正規表現マッチングにPerl互換正規表現 (PCRE) エンジンを使用します。 詳細については、「PCRE構文」をご参照ください。
パラメーター
  • s: 一致させたい文字列。 データ型: 文字列。
  • p: マッチングの正規表現。 データ型: 文字列。
  • o: 正規表現エンジン。 データ型: 文字列。 このパラメーターはオプションです。
    • empty value: この関数が大文字と小文字を区別することを指定します。
    • i: この関数が大文字と小文字を区別しないことを指定します。
戻り値文字列が正規表現と一致する場合、trueが返されます。 それ以外の場合、falseが返されます。
例:
url = concat('http:// ', $host, $uri)
m1 = match_re(url, 'http://.*\.example\.com/.* ', 'i')
m2 = match_re(url, '^ http://.*\.aliyundoc\.com\.cn/.*\.d\\.html(\?.*)?$')
m3 = match_re(url, '^ http://.*.demo.aliyundoc/.*\.d\.html(\?.*)?$')
m4 = match_re(url, '^ http://.*\.aliyundoc\.com\.cn/zt_d/')
m5 = match_re(url, '^ http://learn.aliyundoc.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('X-TENGINE-ERROR '、'auth failed - missing required uri set')
   exit(403)
}
digest = md5(concat(sec1, sec3))
if ne (ダイジェスト, sec2) {
    add_rsp_header('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: [こんにちは、H] 、[Es、E] 

split

この関数の詳細を次の表に示します。
機能説明
構文split(s [,sep])
説明文字列を部分文字列の配列に分割し、配列を返します。
パラメーター
  • s: 分割する文字列。 データ型: 文字列。
  • sep: 文字列を分割するために使用されるセパレータ。 データ型: 文字列。
戻り値ディクショナリ型のキーと値のペアの配列を返します。 keyパラメーターの値は、[1]=xxや [2]=yなど、1から始まる数値です。 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)
}
$arg_from {
    t = split_as_key($arg_from, ',')
    foreach(t, echo_each, ['hi, ds1'])
}
// リクエスト:? from=xx1,xx2,xx3
// レスポンス: xx2=xx2 u=hi,dsl
// xx1=xx1 u=hi,dsl
// xx3=xx3 u=hi,dsl 

tohex

この関数の詳細を次の表に示します。
機能説明
構文tohex(s)
説明文字列を16進文字列に変換します。
パラメーターs: 変換する文字列。
戻り値sパラメーターで指定された文字列から変換された16進文字列を返します。
例:
digest = sha1('xxxx')
add_rsp_header('X-DSL-TOHEX ', tohex (ダイジェスト))

// 注: 応答ヘッダーが追加されます。
// X-DSL-TOHEX: 4ad583af22c2e7d40c1c916b2920299155a4646 4 

tostring

この関数の詳細を次の表に示します。
機能説明
構文tostring(a)
説明任意の型のデータを文字列に変換します。
パラメーターa: 変換するデータ。 データ型: 任意の型。
戻り値パラメーターで指定された値から変換された文字列返します。
例:
s = tostring(123)
add_rsp_header('X-DSL-TOSTRING ', s)

// 注: 応答ヘッダーが追加されます。
// X-DSL-TOSTRING: 123 

tochar

この関数の詳細を次の表に示します。
機能説明
構文tochar(n1、n2、...)
説明
  • 1つ以上の内部整数 (ASCII値) を文字列に変換します。 例えば、48は文字「0」に対応する。
  • 返される文字列の長さは、指定されたパラメーターの数に基づいています。
パラメーターnX: 変換する整数。 1つ以上の整数を指定できます。
戻り値整数から変換された文字列を返します。
例:
add_rsp_header('X-DSL-TOCHAR ', tochar(97))
add_rsp_header('X-DSL-TOCHAR ', tochar (97, 98), true)
// 出力: 応答ヘッダーが追加されます。
// X-DSL-TOCHAR: a
// X-DSL-TOCHAR: ab

$arg_filename {
    hn = 'Content-Disposition'
    add_rsp_header('Content-Disposition', concat('attachment;filename=', tochar(34), filename, tochar(34)))
    add_rsp_header(hn, hv)
}
// 出力: 応答ヘッダーが追加されます。
// Content-Disposition: attachment;filename="filenameパラメータの値" 

reverse

この関数の詳細を次の表に示します。
機能説明
構文リバース (str)
説明文字列を反転します。
パラメーターstr: 反転する文字列。
戻り値指定した文字列から反転した文字列を返します。
例:
say(reverse('hello'))
出力:
#olleh

検索

この関数の詳細を次の表に示します。
機能説明
構文string.find (s, substr, pos)
説明指定した文字列で部分文字列を検索します。
パラメーター
  • s: 検索する文字列。
  • substr: 検索する部分文字列。
  • pos: 検索を開始する位置。 データ型: numeric。 このパラメーターはオプションです。 負の整数を指定できます。 デフォルト値は 1 です。
戻り値
  • 指定された部分文字列が見つかった場合は、配列を返します。
    • インデックス1は、検索が開始される位置を示す。
    • インデックス2は、探索が終了した位置を示す。
  • 指定された部分文字列が見つからない場合は、空の配列を返します。
例:
str = 'hello ds1'
 add_rsp_header('string-find()-start', tostring(get(find(str, 'ds1'), 1)))
 str = 'hello dsl 12'
 add_rsp_header('string-find()-end ', tostring(get(find(str, 'ds1'), 2)))
 str = 'hello ds1'
 add_rsp_header('string-find()-tail-start', tostring(get(find(str, 'ds1', -6), 1)))
 str = 'hello dsl 12'
 add_rsp_header('string-find()-tail-end ', tostring(get(find(str, 'ds1', -6), 2))) 
出力:
string-find()-start:7
string-find()-end:9
string-find()-tail-start:7
string-find()-tail-end:9 

フォーマット

この関数の詳細を次の表に示します。
機能説明
構文フォーマット (fmt, · · ·)
説明1つ以上のパラメータの値をフォーマットします。 format文字列は最初のパラメーターで、文字列を指定する必要があります。 format文字列は、Cプログラミング言語の関数で使用されるsprintfパラメーターの仕様に従います。
フォーマット文字列の構文は、%[parameter][flag][field width][.precision] 指定子です。
  • %%: リテラルのパーセンテージ記号 (%) を印刷します。
  • % c: 整数をASCII文字に変換します。
  • % d: 整数を10進数に変換します。
  • % f: N精度の数値を浮動小数点数に変換します。
  • % o: 整数を8進数に変換します。
  • % s: 整数を文字列に変換します。
  • % x: 整数を小文字の16進数に変換します。
  • % X: 整数を大文字の16進数に変換します。
パラメーター
  • fmt: 文字列型。 フォーマット文字列を指定します。
  • パラメータの可変数: 任意の型。
戻り値ACSII文字列を返します。
例:
say(concat('format:', format(' %%s$%.2s$% s$% s$% c$% d$% %.2o $x$% X', 'format', 3.1415926, true, 95, 3.1415926, 3.1415926, 3.1415926, 10,10)))
フォーマット:
% format$3.$true $_$ 3$3.14$03$a$A

トビン

この関数の詳細を次の表に示します。
機能説明
構文tobin(str)
説明16進文字列をASCII文字列に変換します。
パラメーターstr: 変換する16進文字列。 大文字と小文字は区別されません。
戻り値ACSII文字列を返します。
例:
say(concat('tobin:', tobin('2F2F')))
出力:
tobin://

トリム

この関数の詳細を次の表に示します。
機能説明
構文trim(s, [, loc])
説明sパラメーターで指定された文字列の前または後のすべての空白文字を削除し、指定された空白文字が削除された文字列を返します。
パラメーター
  • s: 文字列。
  • loc: デフォルト値は両方です。 このパラメーターはオプションです。 有効な値:
    • 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
トリム (左):abcd
トリム (右): abcd