华为云用户手册

  • str_center 用指定字符将字符串填充到指定长度。 函数格式 str_center(value, width, fillchar) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被修改的原字符串。 width Number 是 填充后字符串的总长度。 fillchar 任意(自动转为String) 否 填充字符,默认为空格。 返回结果 处理后的字符串。 函数示例 测试数据 { "value": "lts is a log service" } 加工规则 e_set("str_center", str_center(v("value"), 40, "*")) 加工结果 center: lts is a log service str_center: **********lts is a log service**********
  • str_ljust 用指定字符将原字符串从结尾填充至指定长度。 函数格式 str_ljust(value, width, fillchar) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被修改的原字符串。 width Number 是 填充后字符串的总长度。 fillchar 任意(自动转为String) 否 填充字符,默认为空格。 返回结果 处理后的字符串。 函数示例 测试数据 { "value": "lts is a log service" } 加工规则 e_set("str_ljust", str_ljust(v("value"), 30, "*")) 加工结果 value: lts is a log service str_ljust: lts is a log service**********
  • str_startswith 判断字符串是否以指定字符串开头。 函数格式 str_startswith(value, prefix, start, end) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被判断的原字符串。 prefix 任意(自动转为String) 是 前缀规则。该参数可以是一个字符串或者是一个元素。 start Number 否 字符串检测的起始位置。0表示第一个字符,-1表示倒数第一个字符。 end Number 否 字符串检测的结束位置。0表示第一个字符,-1表示倒数第一个字符。 返回结果 如果字符串以指定前缀开头则返回true,否则返回false。 函数示例 测试数据 { "name": "lts is a log service" } 加工规则 e_set("str_startswith",str_startswith(v("name"), "lts")) 加工结果 name: lts is a log service str_startswith: true
  • str_split 通过指定分隔符对字符串进行分割。 函数格式 str_split(value, sep=None, maxsplit=-1) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被分割的原字符串。 sep Number 否 分隔符,None表示空格。 maxsplit Number 否 最大分裂数。-1表示不限制。 返回结果 处理后的字符串。 函数示例 测试数据 { "content": "lts,a,log,service" } 加工规则 e_set("str_split", str_split(v("content"), ",")) 加工结果 content: lts,a,log,service str_split: ["lts","a","log","service"]
  • str_endswith 判断字符串是否以指定后缀结尾。 函数格式 str_endswith(value, suffix, start, end) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被判断的原字符串。 suffix 任意(自动转为String) 是 后缀结尾规则。该参数可以是一个字符串或者是一个元素。 start Number 否 字符串检测的起始位置。0表示第一个字符,-1表示倒数第一个字符。 end Number 否 字符串检测的结束位置。0表示第一个字符,-1表示倒数第一个字符。 返回结果 如果字符串以指定后缀结尾则返回true,否则返回false。 函数示例 测试数据 { "name": "lts is a log service" } 加工规则 e_set("str_endswith",str_endswith(v("name"), "service")) 加工结果 name: lts is a log service str_endswith: true
  • str_splitlines 通过换行符对字符串进行分割。 函数格式 str_splitlines(value, keepends) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被分割的原字符串。 keepends Boolean 否 在输出结果里是否去掉换行符(\r、\r\n、\n)。默认为false,不包含换行符,如果为true,则保留换行符。 返回结果 处理后的列表。 函数示例 测试数据 { "value": "lts\nis\ra\r\n" } 加工规则 e_set("str_splitlines", str_splitlines(v("value"), false)) 加工结果 value: lts\nis\ra\r\n str_splitlines: ['lts','is','a']
  • str_find 判断原字符串中是否包含指定的子字符串。 函数格式 str_find(value, str, begin, end) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被查找的原字符串。 str 任意(自动转为String) 是 指定查找的子字符串。 begin Number 否 开始索引的位置。默认为0表示第一个字符,-1表示倒数第一个字符。 end Number 否 结束索引的位置。默认为字符串的长度。0表示第一个字符,-1表示倒数第一个字符。 返回结果 指定子字符串在原字符串中的位置。如果指定的子字符串在原字符串中出现多次,只返回第一次出现的子字符串的位置。 函数示例 测试数据 { "name": "lts is a log service" } 加工规则 e_set("str_find",str_find(v("name"), "l")) 加工结果 name: lts is a log service str_find: 0
  • str_count 统计字符串里某个字符出现的次数。 函数格式 str_count(value, sub, start, end) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 被统计的原字符串。 sub 任意(自动转为String) 是 需要统计个数的字符。 start Number 否 字符串开始搜索的位置。 0(默认值):第一个字符。 -1:最后一个字符。 end Number 否 字符串中结束搜索的位置。 0:第一个字符。 -1(默认值):最后一个字符。 返回结果 返回指定字符出现的次数。 函数示例 测试数据 { "name": "lts is a log service" } 加工规则 e_set("str_count", str_count(v("name"), "l")) 加工结果 name: lts is a log service str_count: 2
  • str_rfind 判断原字符串中是否包含指定的子字符串。 函数格式 str_rfind(value, substr, beg, end) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 被查找的原字符串。 substr 任意(自动转为String) 是 需要查找的字符。 beg Number 否 开始查找的位置,默认为0。 end Number 否 结束查找的位置,默认为字符串的长度。 返回结果 返回字符或字符串最后一次出现的位置。 函数示例 测试数据 { "name": "lts is a log service" } 加工规则 e_set("str_rfind", str_rfind(v("name"), "i")) 加工结果 name: lts is a log service str_rfind: 17
  • str_upper 将字符串中所有小写字符转换为大写字符。 函数格式 str_upper(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被转换的字符串。 返回结果 转换后的字符串。 函数示例 测试数据 { "name": "LTs" } 加工规则 e_set("str_upper", str_upper(v("name"))) 加工结果 name: LTs str_upper: LTS
  • str_title 将所有单词的第一个字母转化为大写,其余字母均为小写。 函数格式 str_title(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被转换的字符串。 返回结果 转换后的字符串。 函数示例 测试数据 { "name": "for example" } 加工规则 e_set("str_title", str_title(v("name"))) 加工结果 name:for example example str_title: For Exampl
  • str_swapcase 对字符串的大小写字母进行转换。 函数格式 str_swapcase(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被转换的字符串。 返回结果 转换后的字符串。 函数示例 测试数据 { "name": "this is lts" } 加工规则 e_set("str_swapcase", str_swapcase(v("name"))) 加工结果 name: this is lts str_swapcase: THIS IS LTS
  • str_lower 将字符串中所有大写字符转换为小写字符。 函数格式 str_lower(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被转换的字符串。 返回结果 转换后的字符串。 函数示例 测试数据 { "name": "LTs" } 加工规则 e_set("str_lower", str_lower(v("name"))) 加工结果 name: LTs str_lower: lts
  • str_capitalize 将字符串的第一个字母转化为大写,其他字母转化为小写。 函数格式 str_capitalize(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被转换的字符串。 返回结果 转换后的字符串。 函数示例 测试数据 { "value": "welcome to xian" } 加工规则 e_set("str_capitalize", str_capitalize(v("value"))) 加工结果 value:welcome to xian str_capitalize: Welcome to xian
  • str_lstrip 删除字符串开头指定的字符。 函数格式 str_lstrip(value, chars) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被修改的原字符串。 chars 任意(自动转为String) 否 字符串开头需要删除的字符集,默认为空格。 返回结果 修改后的字符串。 函数示例 测试数据:无 加工规则 e_set("str_strip", str_lstrip("**123**", "*")) 加工结果 str_strip: 123**
  • str_rstrip 删除字符串结尾指定的字符。 函数格式 str_rstrip(value, chars) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被修改的原字符串。 chars 任意(自动转为String) 否 字符串结尾需要删除的字符集,默认为空格。 返回结果 修改后的字符串。 函数示例 测试数据:无 加工规则 e_set("str_strip", str_rstrip("**123**", "*")) 加工结果 str_strip: 123**
  • str_strip 删除字符串中指定的字符。 函数格式 str_strip(value, chars) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被修改的原字符串。 chars 任意(自动转为String) 否 字符串开头和结尾需要删除的字符集,默认为\t\r\n。 返回结果 修改后的字符串。 函数示例 示例1:删除空格。 测试数据 { "source":" lts" } 加工规则 e_set("str_strip", str_strip(v("source"))) 加工结果 source: lts str_strip: lts 示例2:删除开头和结尾是#的字符。 测试数据 { "source": "##lts#" } 加工规则 e_set("str_strip", str_strip(v("source"), "#")) 加工结果 source: ##lts# str_strip: lts
  • str_replace 函数格式 str_replace(value, old, new, count) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被替换的值。 old 任意(自动转为String) 是 需要被替换的字符串。 new 任意(自动转为String) 是 替换后新的字符串。 count Number 否 替换次数,可选项。如果不设置count,则表示替换所有。 返回结果 替换后的新字符串。 函数示例 测试数据:无 加工规则 e_set("str_replace", str_replace("this is string example", "is", "was")) 加工结果 str_replace: thwas was string example
  • str_translate 函数格式 str_translate(value, replace_string, mapping_string) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被替换的原字符串。 replace_string 任意(自动转为String) 是 需要替换的字符集合。 mapping_string 任意(自动转为String) 是 替换后的字符集合。 返回结果 处理后的字符串。 函数示例 测试数据:无 加工规则 e_set("str_translate", str_translate("lts", "ts", "34")) 加工结果 str_translate: l34
  • str_sort 函数格式 str_sort(value, reverse=false) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被排序的原字符串。 reverse Boolean 否 默认为false,表示升序排列。 返回结果 排序后的字符串。 函数示例 测试数据 { "key1": "value" } 加工规则 e_set("str_sort", str_sort(v("key1"))) 加工结果 key1: value str_sort: aeluv
  • str_reverse 函数格式 str_reverse(value) 参数说明 参数名称 参数类型 是否必填 说明 value 任意(自动转为String) 是 需要被反转的值 返回结果 反转后的字符串。 函数示例 测试数据 { "data": "switch" } 加工规则 e_set("reverse_data", str_reverse(v("data"))) 加工结果 data: switch reverse_data: hctiws
  • str_zip 函数格式 str_zip(value1,value2,combine_sep=None,sep=None,quote=None,lparse=None,rparse=None) 参数说明 参数名称 参数类型 是否必填 说明 value1 任意(自动转为String) 是 需要被合并的值。 value2 任意(自动转为String) 是 需要被合并的值。 combine_sep 任意(自动转为String) 否 合并时元素之间的合并标识,默认为# sep 任意(自动转为String) 否 合并后元素之间的分隔符,仅支持单个字符,默认为, quote 任意(自动转为String) 否 将合并后的元素括起来的字符,当值包含分隔符时需要使用,默认为" lparse 任意(自动转为String) 否 指定value1中元素之间的分隔符和引用符,默认分隔符为,,默认引用符为"。格式为lparse=(',', '"')。 说明 引用符优先级高于分隔符。 rparse 任意(自动转为String) 否 指定value2中元素之间的分隔符和引用符,默认分隔符为,,默认引用符为"。格式为rparse=(',', '"')。 说明 引用符优先级高于分隔符。 返回结果 合并后的字符串。 函数示例 示例1:sep的使用。 测试数据 { "key1": "value1,value11", "key2": "value2,value21" } 加工规则 e_set("combine", str_zip(v("key1"), v("key2"), sep="|")) 加工结果 key1: value1,value11 key2: value2,value21 combine: value1#value2|value11#value21 示例2:quote的使用。 测试数据 { "key1": "\"value1, value2\", value3, \"value4,value5\"", "key2": "value11,\"value12,value13\",value14" } 加工规则 e_set("combine", str_zip(v("key1"), v("key2"), quote='|')) 加工结果 key1: "value1, value2", value3, "value4,value5" key2: value11,"value12,value13",value14 combine: |value1,value2#value11|,|value3#value12,value13|,|value4,value5#value14| 示例3:不同长度的值。 测试数据 { "key1": "value1,value2", "key2": "value11,value12,value13" } 加工规则 e_set("combine", str_zip(v("key1"), v("key2"))) 加工结果 key1: value1,value2 key2: value11,value12,value13 combine: value1#value11,value2#value12 示例4:lparse和rparse的使用。 测试数据 { "key1": "|value1, value1|, value2, |value3,value3|", "key2": "value11, #value12,value12#, value13" } 加工规则 e_set("combine", str_zip(v("key1"), v("key2"), lparse=(",", '|'), rparse=(",", '#'))) 加工结果 key1: |value1, value1|, value2, |value3,value3| key2: value11, #value12,value12#, value13 combine: "value1,value1#value11","value2#value12,value12","value3,value3#value13"
  • str_join 函数格式 str_join(connector, str1, str2, ...) 参数说明 参数名称 参数类型 是否必填 说明 connector 任意(自动转为string) 是 连接符,比如#,$,%等 str1 任意(自动转为string) 是 待连接的值1 str2 任意(自动转为string) 是 待连接的值2 返回结果 连接后的字符串。 函数示例 测试数据:无 加工规则 e_set("email", str_join("@", "lts", "aa", "com")) 加工结果 email: lts@aa@com
  • str_format 函数格式 str_format(format, str1, str2, ...) 参数说明 参数名称 参数类型 是否必填 说明 format string 是 转换后的格式 str1 任意 是 待格式化的值1 str2 任意 是 待格式化的值2 返回结果 格式化后的字符串。 函数示例 测试数据:无 加工规则 e_set("result", str_format("{}={}", "lts", 8)) 加工结果 result: lts=8
  • 函数列表 类型 函数 说明 多字符串操作 str_format 按照指定格式对字符串进行格式化。 str_join 通过连接符将输入的字符串连接生成一个新的字符串。 str_zip 将两个值或表达式的字符串进行并发分裂然后再合并成一个字符串。 排序、反转、替换 str_sort 字符串排序。 str_reverse 将一个字符串进行反转。 str_replace 根据规则将旧字符串替换成新字符串。 str_translate 将字符串中的指定字符按照对应关系进行替换。 常见操作 str_strip 删除字符串中指定的字符。 str_lstrip 删除字符串开头的指定字符。 str_rstrip 删除字符串结尾的指定字符。 str_lower 将字符串中所有大写字符转换为小写字符。 str_upper 将字符串中所有小写字符转换为大写字符。 str_title 将所有单词的第一个字母转化为大写,其余字母均为小写。 str_capitalize 将字符串的第一个字母转化为大写,其他字母转化为小写。 str_swapcase 对字符串的大小写字母进行转换。 查找判断 str_count 统计字符串里某个字符出现的次数。 str_find 判断原字符串中是否包含指定的子字符串。 str_rfind 查找字符串中指定字符或者字符串最后一次出现的位置。 str_endswith 判断字符串是否以指定后缀结尾。判断字符串是否以指定后缀结尾。 str_startswith 判断字符串是否以指定字符串开头。 切分 str_split 通过指定分隔符对字符串进行分割。 str_splitlines 通过换行符符对字符串进行分割。 str_partition 根据指定的分隔符将字符串从左往右分割为三部分。 str_rpartition 根据指定的分隔符将字符串从右往左分割为三部分。 格式化 str_center 用指定字符将字符串填充到指定长度。 str_ljust 用指定字符将字符串从结尾填充至指定长度。 str_rjust 用指定字符将原字符串从开头填充至指定长度。 str_zfill 用字符0从开头将字符串填充至指定长度。 str_expandtabs 将字符串中的\t转为空格。 字符集判断 str_isalnum 判断字符串是仅由字母和数字组成。 str_isalpha 判断字符串是否仅由字母组成。 str_isascii 判断字符串由ASCII组成。 str_isdecimal 判断字符串是否仅包含十进制字符。 str_isdigit 判断字符串是否仅由数字组成。 str_isidentifier 判断字符串是否是有效的Python标识符 str_islower 判断字符串是否由小写字母组成。 str_isnumeric 判断字符串是否由数字组成。 str_isprintable 判断字符串中是否所有字符都是可打印字符。 str_isspace 判断字符串是否仅由空格字符组成。 str_istitle 判断字符串中所有单词的拼写首字母是否为大写,且其他字母为小写。 str_isupper 判断字符串中所有的字母是否都为大写。 str_uuid 随机生成UUID。
  • e_if_else 根据判断条件的结果执行操作。 函数格式 e_if_else(条件, 真时操作, 假时操作) 参数说明 参数名称 参数类型 是否必填 说明 条件 任意 是 表达式或其组合。其结果不是布尔值时,会进行真假判断。 真时操作 全局操作函数 是 全局操作函数或其组合。 假时操作 全局操作函数 是 全局操作函数或其组合。 返回结果 返回不同条件对应的操作结果。 函数示例 如果result字段的值为ok或pass,或者status字段的值为200,则保留日志。 测试数据 { "result":"ok", "status": 400 } { "result": "Pass", "status": 200 } { "result": "failure", "status": 500 } 加工规则 e_if_else( op_or(e_match("result", r"(?i)ok|pass"), e_search("status== 200")), e_keep(),e_drop() ) 加工结果 result: ok status: 400 result: Pass status: 200
  • e_switch 组合多个条件和操作。 函数格式 e_switch(条件1, 操作1, ……, default=None) 说明 函数中条件和操作必须成对出现。 参数说明 参数名称 参数类型 是否必填 说明 条件 任意 是 表达式或其组合。其结果不是布尔值时,会进行真假判断。 操作 全局操作函数 是 全局操作函数或其组合。 default 全局操作函数 否 默认的全局操作函数或其组合。没有条件满足时执行该操作。 返回结果 返回加工处理后的日志。 函数示例 如果content字段的值为123,则将__topic__字段的值设置为Number。如果data字段的值为123,则将__topic__字段的值设置为PRO。 测试数据 { "__topic__": , "age": 18, "content": 123, "name":"maki", "data": 342 } { "__topic__": , "age": 18, "content": 23, "name": "maki" , "data": 123 } 加工规则 e_switch( e_search("content==123"), e_set("__topic__", "Number", mode="overwrite"), e_search("data==123"), e_set("__topic__", "PRO", mode="overwrite"), ) 加工结果 __topic__: Number age: 18 content: 123 name: maki data: 342 __topic__: PRO age: 18 content: 23 name: maki data: 123 通过e_switch语法和e_output语法结合,将符合规则的日志投递到不同的Logstream。其中default=e_drop(),表示将不满足规则的日志丢弃,不做投递处理。若不设置default参数,则表示不满足规则日志都会被投递到配置的第一个Logstream中。 output的加工结果不会显示到加工结果框中。 测试数据 { "__topic__": "sas-log-dns" , "test": "aa" , "__topic__": "aegis-log-network", "test":"ecs" , "__topic__": "local-dns" , "test":"sls" , "__topic__": "aegis-log-login" , "test": "sls" } 加工规则 e_switch(e_match("__topic__","sas-log-dns"), e_output(name="target1"), e_match("__topic__","sas-log-process"), e_output(name="target2"), e_match("__topic__","local-dns"), e_output(name="target3"), e_match("__topic__","aegis-log-network"), e_output(name="target4"), e_match("__topic__","aegis-log-login"), e_output(name="target5"), default=e_drop()) 更多参考 支持和其他函数组合使用。
  • 函数列表 函数 说明 e_compose 用于组合一系列操作。 常用于e_if、e_switch、e_if_else中组合操作。 依次调用操作,将日志传递转换并返回最后的日志。 对于某一条日志,如果其中某一操作删除了日志,则不会再执行后续操作。 支持和其他函数组合使用。 e_if 条件与操作组合。 满足条件则进行对应操作,不满足条件则不进行对应操作,直接进行下一个条件判断。 对于某一条日志,如果其中某一操作删除了日志,则不会再执行后续操作。 e_if( e_has("a"), e_output("target-a"), e_has("b"), e_output("target-b"), ) 例如,该加工规则相当于以下Python代码结构: if e_has("a"): e_output("target-a") if e_has("b"): e_output("target-b") 支持和其他函数组合使用。 e_if_else 根据条件判断的结果进行对应操作。 e_if_else(e_has("a"), e_output("target-a"), e_output("target-b")) 例如,该加工规则相当于以下Python代码结构: if e_has("a"): e_output("target-a") else: e_output("target-b") e_switch 条件与操作的组合。 满足条件则进行对应操作并返回结果,不满足条件则不进行对应操作,直接进行下一个条件判断。 如果没有满足任何条件,但配置了默认参数,则执行默认配置的操作并返回结果。 对于某一条日志,如果其中某一操作删除了日志,则不会再执行后续操作。 e_switch( e_has("a"), e_output("target-a"), e_has("b"), e_output("target-b"), default=e_output("target-default"), ) 例如,该加工规则相当于以下Python代码结构: if e_has("a"): e_output("target-a") elif e_has("b"): e_output("target-b") else: e_output("target-default") 支持和其他函数组合使用。
  • e_if 据判断条件执行操作。 函数格式 e_if(条件, 操作) e_if(条件1, 操作1, 条件2, 操作2, ……) 函数中条件和操作必须成对出现。 参数说明 参数名称 参数类型 是否必填 说明 条件 任意 是 表达式或其组合。其结果不是布尔值时,会进行真假判断。 操作 全局操作函数 否 全局操作函数或其组合。 返回结果 返回加工处理后的日志。 函数示例 示例1:字段值匹配后再进行操作。 result字段值为failed或failure时,设置__topic__字段的值为login_failed_event。 测试数据 { "result": "failed" } 加工规则 e_if(e_match("result", r"failed|failure"), e_set("__topic__", "login_failed_event")) 加工结果 result: failed __topic__: login_failed_event 示例2:根据字段值判断后再提取数据。 当request_body字段存在且值非空时,调用字段类操作函数JSON将request_body字段展开成多个值。 测试数据 { "request_body": {\"k1": 100, \"k2\": 200} } 加工规则 e_if(v("request_body"), e_json("request_body")) 加工结果 request_body: {"k1": 100, "k2": 200} k1: 100 k2: 200 示例3:高级判断后再进行操作。 当valid字段的值为小写failed时,丢弃日志。 测试数据 { "valid":"failed" } 加工规则 e_if(op_eq(str_lower(v("valid")), "failed"), e_drop()) 加工结果:丢弃日志 示例4:多个条件按顺序操作。 测试数据 { "valid":"failed" } 加工规则 e_if(True, e_set("__topic__", "default_login"), e_match("valid", "failed"), e_set("__topic__", "login_failed_event")) 加工结果 valid: failed __topic__:login_failed_event 更多参考 支持和其他函数组合使用。
  • e_compose 组合多个操作。 函数格式 e_compose(操作1, 操作2, ……) 参数说明 参数名称 参数类型 是否必填 说明 操作1 全局操作函数 是 全局操作函数或其组合。 操作2 全局操作函数 否 全局操作函数或其组合。 返回结果 返回操作后日志。 函数示例 如果content字段的值为123,则先删除age字段和name字段,然后将content字段的值设置为ctx。 测试数据 { "content": 123, "age": 23, "name": "twiss" } 加工规则 e_if( e_search("content==123"), e_compose(e_drop_fields("age|name"), e_rename("content", "ctx")), ) 加工结果 ctx: 123 更多参考 支持和其他函数组合使用。
共100000条