全部產品
Search
文件中心

ApsaraVideo VOD:字串類型相關

更新時間:Feb 27, 2025

本文為您介紹字串類型相關函數的文法、說明、參數、傳回值和樣本。

substr

函數詳細資料,請參見下表。
專案描述
文法substr(s, i, j)
說明字串截取操作。
參數
  • s:目標字串。
  • i:整型,截取起始下標。從1開始,-1表示字串最尾字元。
  • j:整型,截取終止下標。從1開始,-1表示字串最尾字元。
傳回值返回s的子字串s[i, j]
樣本
//說明:判斷檔案類型是否為.m3u8的兩種方法:
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, ...)
說明字串串連操作。
參數一個或多個參數,參數類型允許為數字字串。
傳回值將多個參數串連為一個字串,並返回該字串。
樣本
//說明:判斷檔案類型是否為.m3u8的兩種方法:
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

函數詳細資料,請參見下表。
專案描述
文法upper(s)
說明將字串中所有的小寫字母轉換成大寫字母。
參數s:目標字串。
傳回值返回大寫s
樣本
mystr = 'Hello, Dsl'                                                                                                                                                                                   
say(upper(mystr))                                                                                                                                                                                      
say(lower(mystr)) 
//輸出:
//HELLO,DSL
//hello, dsl

lower

函數詳細資料,請參見下表。
專案描述
文法lower(s)
說明將字串中所有的大寫字母轉換成小寫字母。
參數s:目標字串。
傳回值返回小寫s
樣本
mystr = 'Hello, Dsl'                                                                                                                                                                                   
say(upper(mystr))                                                                                                                                                                                      
say(lower(mystr)) 
//輸出:
//HELLO,DSL
//hello, dsl

len

函數詳細資料,請參見下表。
專案描述
文法len(s)
說明擷取字串的長度。
參數s:目標字串。
傳回值返回s的長度,整型。
樣本
//說明:判斷檔案類型是否為.m3u8的兩種方法:
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'))
}

byte

函數詳細資料,請參見下表。
專案描述
文法byte(c)
說明擷取字元的ASCII碼。
參數c:目標字元,必須為單個字元。
傳回值返回對應的ASCII碼,數字類型。
樣本
say(byte('a'))
say(byte('A'))
//輸出:97
//65

match_re

函數詳細資料,請參見下表。
專案描述
文法match_re(s, p [, o])
說明使用PCRE正則引擎,進行正則匹配,判斷字串是否匹配對應的Regex。詳細資料,請參見PCRE正則文法
參數
  • s:目標字串,字元類型。
  • p:Regex,字元類型。
  • o:正則引擎參數,字元類型,可選填。
    • 不填寫:則區分大小寫。
    • 填寫為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:Regex,字元類型。
  • 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 necessary uri set')
   exit(403)
}
digest = md5(concat(sec1, sec3))
if ne(digest, 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: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為空白,則預設以任意空白字元分隔。預設空白字元包含:空格、Tab。
樣本
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[分割元素]->[分割元素]
樣本
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,dsl'])
}    
//請求:?from=xx1,xx2,xx3 
//響應:xx2=xx2 u=hi,dsl
//xx1=xx1 u=hi,dsl
//xx3=xx3 u=hi,dsl                                                                                                                                   

tohex

函數詳細資料,請參見下表。
專案描述
文法tohex(s)
說明十六進位轉換。
參數s:字串。
傳回值返回s的十六進位可讀形式。
樣本
digest = sha1('xxxx')
add_rsp_header('X-DSL-TOHEX', tohex(digest))    

//說明:增加回應標頭
//X-DSL-TOHEX: 4ad583af22c2e7d40c1c916b2920299155a46464                                                                                                                                     

tostring

函數詳細資料,請參見下表。
專案描述
文法tostring(a)
說明字串類型轉換。
參數a:任意類型。
傳回值返回參數a轉換後的字串。
樣本
s = tostring(123)
add_rsp_header('X-DSL-TOSTRING', s)  

//說明:增加回應標頭
//X-DSL-TOSTRING: 123                                                                                                                            

tochar

函數詳細資料,請參見下表。
專案描述
文法tochar(n1, n2, ...)
說明
  • 接受1個或多個整型參數,返回對應整型參數的內部數值表示的字串,例如:48對應於字元“0”。
  • 返回字串的長度為參數個數。
參數nX:整型參數。
傳回值返迴轉換後的字串。
樣本
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

if $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

函數詳細資料,請參見下表。
專案描述
文法reverse(str)
說明字串反轉。
參數str:待反轉的字串。
傳回值返回字元類型,返回反轉後的字串。
樣本
say(reverse('hello'))
輸出:
#olleh

find

函數詳細資料,請參見下表。
專案描述
文法string.find (s, substr, pos)
說明在目標字串中搜尋指定的字串。
參數
  • s:待尋找的字串。
  • substr:需要尋找的子串。
  • pos(選擇性參數):該參數為索引,類型為數值,指定尋找的起始位置。可以為負數,預設起始位置為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

format

函數詳細資料,請參見下表。
專案描述
文法format(fmt, ···)
說明返回不定數量參數的格式化版本,格式化串為第一個參數(必須是一個字串)。格式化字串遵循ISO C函數sprintf的規則。
fmt規則格式為:%[指定參數][標識符][寬度][.精度]指示符
  • %%:印出百分比符號,不轉換。
  • %c:整數轉換成對應的ASCII字元。
  • %d:整數轉換成十進位。
  • %f:倍精確度數字轉換成浮點數。
  • %o:整數轉換成八進位。
  • %s:整數轉換成字串。
  • %x:整數轉換成小寫十六進位。
  • %X:整數轉換成大寫十六進位。
參數
  • fmt:string類型,格式化字串。
  • 可變參數:可以為任意類型。
傳回值傳回值為string類型。
樣本
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

tobin

函數詳細資料,請參見下表。
專案描述
文法tobin(str)
說明16進位轉ASCII字串。
參數str:雙位元組16進位字串,不區分大小寫。
傳回值傳回值為string類型。
樣本
say(concat('tobin:', tobin('2F2F')))
輸出:
tobin://

trim

函數詳細資料,請參見下表。
專案描述
文法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')))
輸出:
trim():abcd
trim(left):abcd
trim(right): abcd