详情页标题前

阿里云负载均衡字符串类型相关函数-云淘科技

详情页1

本文为您介绍字符串类型相关函数的语法、说明参数返回值和示例

substr | concat | format | upper | lower | len | byte | match_re | capture_re | gsub_re | split | split_as_key | tohex | tobin | tostring | tochar | reverse | find | trim

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'))
    }

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

upper

项目 描述
语法 upper(s)
说明 将字符串中所有的小写字母转换成大写字母。
参数 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的两种方法:

  • 方法一:
    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正则引擎,进行正则匹配,判断字符串是否匹配对应的正则表达式。更多信息,请参见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为空,则默认以任意空白字符分隔。默认空白字符包含:空格、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,ascript'])
}                                                                                                                             

请求:

?from=xx1,xx2,xx3

响应:

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

tohex

项目 描述
语法 tohex(s)
说明 十六进制转换。
参数 s:字符串。
返回值 返回s的十六进制可读形式。
示例
digest = sha1('xxxx')
add_rsp_header('X-AScript-TOHEX', tohex(digest))                                                                                                                            

输出:

X-AScript-TOHEX:4ad583af22c2e7d40c1c916b2920299155a46464 

tobin

项目 描述
语法 tobin(str)
说明 16进制转ASCII字符串。
参数 str: 双字节16进制字符串,不区分大小写。
返回值 String类型。
示例
say(concat('tobin:', tobin('2F2F')))                                                                                                                              

输出:

tobin://

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)))

}                                                                                                                                  

输出:增加响应头。

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

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

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/169278.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云ECS云服务器DescribeNetworkInterfaces-云淘科技

    调用DescribeNetworkInterfaces查询一个或多个弹性网卡(ENI)的详细信息。 接口说明 DescribeNetworkInterfaces接口支持分页查询。具体使用说明:分页查询首页时,仅需设置MaxResults以限制返回信息的条目数,返回结果中的NextToken将作为查询后续页的凭证。查询后续页时,将NextToken参数设置为上…

    阿里云服务器 2023年12月9日
  • 阿里云云原生大数据计算服务 MaxComputeSHUFFLE-云淘科技

    返回指定数组的元素随机排列数组。 命令格式 shuffle(array) 参数说明 array:输入数组。 返回值说明 返回指定数组的元素随机排列数组。 如果输入值为null,则返回NULL。 该函数的返回结果是不确定的。 示例 SELECT shuffle(array(1, 20, 3, 5)); 返回结果如下: [3,1,5,20] SELECT shu…

  • 阿里云RDS数据库UpdateUserBackupFile – 变更用户备份信息-云淘科技

    该接口用于变更用户备份的备注信息和保留时长。 接口说明 适用引擎 RDS MySQL 相关功能文档 用户备份即MySQL自建库的全量备份数据,您可以将用户备份恢复至云上。更多信息,请参见MySQL 5.7、8.0自建数据库全量上云。 注意 使用该接口前,请仔细阅读功能文档,确保完全了解使用接口的前提条件及使用后造成的影响后,再进行操作。 调试 您可以在Ope…

    阿里云数据库 2023年12月9日
  • 阿里云大数据开发治理平台 DataWorksDeleteBaseline-云淘科技

    根据基线id删除基线配置,只有基线上游没有任何节点情况下才允许删除,可以通过 updateBaseline 删除基线上游节点。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 请求参数 名称 类型 是否必选 示例值 描述 Action String…

  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云日志服务SLS计费方式-云淘科技

    针对已经购买“网络质量分析器”的用户,计费方式说明。 按量计费是一种先使用后付费的计费方式,根据用户 App 端实际探测数量收费。当您开通网络质量分析器的按量计费后,根据App端实际发起(包括配置下发与主动发起)的探测量收费。 计费说明 网络质量分析器按量计费的计费规则如下表所示。 计费规则 说明 适用场景 网络质量分析器通过集成在 App 端的 SDK从全…

    阿里云日志服务SLS 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。