[comment]: # attributes: notoc

[comment]: # (terms: ascii, bitlength, bytelength, char, concat, insert, left, length, ltrim, mid, repeat, replace, right, rtrim, trim )

[comment]: # ({6d5447dc-b12f316b})
# 9 字符串函数

此处列出的所有函数均支持用于：

-   [触发器表达式](/manual/config/triggers/expression)
-   [计算型监控项公式](/manual/config/items/itemtypes/calculated)
-   [表达式宏](/manual/config/macros/expression_macros)

以下仅列出函数，不包含附加信息。单击函数可查看完整详细信息。

|Function|Description|
|--|--------|
|[ascii](#ascii)|值最左侧字符的 ASCII 代码。|
|[bitlength](#bitlength)|值的位长度。|
|[bytelength](#bytelength)|值的字节长度。|
|[char](#char)|将值解释为 ASCII 代码并返回相应字符。|
|[concat](#concat)|通过连接被引用监控项的值或常量值而得到的字符串。|
|[insert](#insert)|从字符串中的指定位置开始，向字符串中插入指定字符或空格。|
|[jsonpath](#jsonpath)|返回 JSONPath 结果。|
|[left](#left)|返回值最左侧的字符。|
|[length](#length)|值的字符长度。|
|[ltrim](#ltrim)|从字符串开头移除指定字符。|
|[mid](#mid)|返回从 'start' 指定的字符位置开始、长度为 N 个字符的子字符串。|
|[repeat](#repeat)|重复一个字符串。|
|[replace](#replace)|在值中查找模式并替换为 replacement。|
|[right](#right)|返回值最右侧的字符。|
|[rtrim](#rtrim)|从字符串末尾移除指定字符。|
|[trim](#trim)|从字符串开头和末尾移除指定字符。|
|[xmlxpath](#xmlxpath)|返回 XML XPath 结果。|

[comment]: # ({/6d5447dc-b12f316b})

[comment]: # ({3df12990-e91f4bca})
### 函数详情

有关函数参数的一些一般说明：

-   函数参数以逗号分隔
-   表达式可作为参数
-   字符串参数必须使用双引号；否则可能会被
    误解
-   可选的函数参数（或参数部分）以
    `<` `>` 表示

[comment]: # ({/3df12990-e91f4bca})

[comment]: # ({6ce6045e-6bdf63a4})
##### ascii(value) {#ascii}

值最左侧字符的 ASCII 代码。<br>
支持的值类型：*String*、*Text*、*Log*。

参数：

-   **value** - 要检查的值

例如，像 'Abc' 这样的值将返回 '65'（'A' 的 ASCII 代码）。

示例：

    ascii(last(/host/key))

[comment]: # ({/6ce6045e-6bdf63a4})

[comment]: # ({1ab24b6c-30f96a52})
##### bitlength(value) {#bitlength}

value 的位长度。<br>
支持的值类型：*String*、*Text*、*Log*、*Integer*。

参数：

-   **value** - 要检查的值

示例：

    bitlength(last(/host/key))

[comment]: # ({/1ab24b6c-30f96a52})

[comment]: # ({8c21016a-d58806ed})
##### bytelength(value) {#bytelength}

value 的字节长度。<br>
支持的值类型：*String*、*Text*、*Log*、*Integer*。

参数：

-   **value** - 要检查的值

示例：

    bytelength(last(/host/key))

[comment]: # ({/8c21016a-d58806ed})

[comment]: # ({62456378-e35a326a})
##### char(value) {#char}

通过将该值解释为 ASCII 代码来返回相应字符。<br>
支持的值类型：*Integer*。

参数：

-   **value** - 要检查的值

该值必须在 0-255 范围内。例如，像“65”这样的值（解释为 ASCII 代码）将返回“A”。

示例：

    char(last(/host/key))

[comment]: # ({/62456378-e35a326a})

[comment]: # ({e3481e84-5e2f76e5})
##### concat(<value1>,<value2>,...) {#concat}

通过连接引用的监控项值或常量值而得到的字符串。<br>
支持的值类型：*String*、*Text*、*Log*、*Float*、*Integer*。

参数：

-   **valueX** - 由某个历史函数返回的值或常量值（字符串、整数或浮点数）。必须至少包含两个参数。

例如，将值“Zab”与“bix”（常量字符串）连接后，将返回“Zabbix”。

示例：

    concat(last(/host/key),"bix")
    concat("1 min: ",last(/host/system.cpu.load[all,avg1]),", 15 min: ",last(/host/system.cpu.load[all,avg15]))

[comment]: # ({/e3481e84-5e2f76e5})

[comment]: # ({ebd6582c-06698de3})
##### insert(value,start,length,replacement) {#insert}

从字符串中指定的位置开始，将指定字符或空格插入到该字符串中。<br>
支持的值类型：*String*、*Text*、*Log*。

参数：

-   **value** - 要检查的值；<br>
-   **start** - 起始位置；<br>
-   **length** - 要替换的位置数；<br>
-   **replacement** - 替换字符串。

例如，如果将值 'Zabbbix' 中的 'bb'（起始位置为 3，要替换的位置数为 2）替换为 'b'，则该值将变为 'Zabbix'。

示例：

    insert(last(/host/key),3,2,"b")

[comment]: # ({/ebd6582c-06698de3})

[comment]: # ({52f92ac2-2791e6b1})
##### jsonpath(value,path,<default>) {#jsonpath}

返回 JSONPath 结果。<br>
支持的值类型：*String*、*Text*、*Log*。

参数： 

-   **value** - 要检查的值；<br>
-   **path** - 路径（必须加引号）；<br>
-   **default** - 可选的回退值，如果 JSONPath 查询未返回数据则使用该值。请注意，发生其他错误时将返回失败（例如“unsupported construct”）。

示例：

    jsonpath(last(/host/proc.get[zabbix_agentd,,,summary]),"$..size")

[comment]: # ({/52f92ac2-2791e6b1})

[comment]: # ({3802644b-16f928ed})
##### left(value,count) {#left}

返回值最左侧的字符。<br>
支持的值类型：*String*、*Text*、*Log*。

参数：

-   **value** - 要检查的值；<br>
-   **count** - 要返回的字符数。

例如，通过指定返回最左侧 3 个字符，您可以从“Zabbix”中返回“Zab”。另请参见 [right()](#right)。

示例：

    left(last(/host/key),3) #返回最左侧三个字符

[comment]: # ({/3802644b-16f928ed})

[comment]: # ({b64efd51-b8f86065})
##### length(value) {#length}

value 的字符长度。<br>
支持的值类型：*String*、*Text*、*Log*。

参数：

-   **value** - 要检查的值。

示例：

    length(last(/host/key)) #最新值的长度
    length(last(/host/key,#3)) #倒数第三个最新值的长度
    length(last(/host/key,#1:now-1d)) #一天前最近值的长度

[comment]: # ({/b64efd51-b8f86065})

[comment]: # ({561f79d7-01a5023c})
##### ltrim(value,<chars>) {#ltrim}

从字符串开头移除指定字符。<br>
支持的值类型：*字符串*、*文本*、*日志*。

参数：

-   **value** - 要检查的值；<br>
-   **chars**（可选）- 指定要移除的字符。

默认会移除开头的空白字符（如果未指定可选字符）。另请参见：[rtrim()](#rtrim)、[trim()](#trim)。

示例：

    ltrim(last(/host/key)) #从字符串开头移除空白字符
    ltrim(last(/host/key),"Z") #从字符串开头移除所有 'Z'
    ltrim(last(/host/key)," Z") #从字符串开头移除所有空格和 'Z'

[comment]: # ({/561f79d7-01a5023c})

[comment]: # ({a67fc1e0-de3605ed})
##### mid(value,start,length) {#mid}

返回从由“start”指定的字符位置开始、长度为 N 个字符的子字符串。<br>
支持的值类型：*String*、*Text*、*Log*。

参数：

-   **value** - 要检查的值；<br>
-   **start** - 子字符串的起始位置；<br>
-   **length** - 子字符串中要返回的字符数。

例如，对于类似“Zabbix”的值，如果起始位置为 2，返回的字符数为 4，则可以返回“abbi”。

示例：

    mid(last(/host/key),2,4)="abbi"

[comment]: # ({/a67fc1e0-de3605ed})

[comment]: # ({f8b077e7-9e3e42f7})
##### repeat(value,count) {#repeat}

重复一个字符串。<br>
支持的值类型：*String*、*Text*、*Log*。

参数：

-   **value** - 要检查的值；<br>
-   **count** - 重复的次数。

示例：

    repeat(last(/host/key),2) #将该值重复两次

[comment]: # ({/f8b077e7-9e3e42f7})

[comment]: # ({54a6774a-6aa607aa})
##### replace(value,pattern,replacement) {#replace}

在值中查找模式，并替换为 replacement。模式的所有匹配项都会被替换。<br>
支持的值类型：*String*、*Text*、*Log*。

参数： 

-   **value** - 要检查的值；<br>
-   **pattern** - 要查找的模式；<br>
-   **replacement** - 用于替换该模式的字符串。

示例：

    replace(last(/host/key),"ibb","abb") #将所有 'ibb' 替换为 'abb'

[comment]: # ({/54a6774a-6aa607aa})

[comment]: # ({30c04fe6-ccefcd9e})
##### right(value,count) {#right}

返回值最右侧的字符。<br>
支持的值类型：*String*、*Text*、*Log*。

参数： 

-   **value** - 要检查的值；<br>
-   **count** - 要返回的字符数。

例如，通过指定返回最右侧的 3 个字符，您可以从“Zabbix”中返回“bix”。另请参见 [left()](#left)。

示例：

    right(last(/host/key),3) #返回最右侧的三个字符

[comment]: # ({/30c04fe6-ccefcd9e})

[comment]: # ({d1d00105-6e9972ef})
##### rtrim(value,<chars>) {#rtrim}

从字符串末尾移除指定字符。<br>
支持的值类型：*String*、*Text*、*Log*。

参数：

-   **value** - 要检查的值；<br>
-   **chars**（可选）- 指定要移除的字符。

默认会移除右侧空白字符（如果未指定可选字符）。另请参见：[ltrim()](#ltrim)、[trim()](#trim)。

示例：

    rtrim(last(/host/key)) #从字符串末尾移除空白字符
    rtrim(last(/host/key),"x") #从字符串末尾移除所有 'x'
    rtrim(last(/host/key),"x ") #从字符串末尾移除所有 'x' 和空格

[comment]: # ({/d1d00105-6e9972ef})

[comment]: # ({a119fc60-97fb4186})
##### trim(value,<chars>) {#trim}

从字符串的开头和结尾移除指定字符。<br>
支持的值类型：*字符串*、*文本*、*日志*。

参数：

-   **value** - 要检查的值；<br>
-   **chars**（可选）- 指定要移除的字符。

默认会从两端去除空白字符（如果未指定可选字符）。另请参见：[ltrim()](#ltrim)、[rtrim()](#rtrim)。

示例：

    trim(last(/host/key)) #从字符串的开头和结尾移除空白字符
    trim(last(/host/key),"_") #从字符串的开头和结尾移除 '_'

[comment]: # ({/a119fc60-97fb4186})

[comment]: # ({ab4c5ed4-b7fde6b3})
##### xmlxpath(value,path,<default>) {#xmlxpath}

返回 XML XPath 结果。<br>
支持的值类型：*String*、*Text*、*Log*。

参数： 

-   **value** - 要检查的值；<br>
-   **path** - 路径（必须加引号）；<br>
-   **default** - 可选的回退值，如果 XML XPath 查询返回空节点集，则使用该值。如果空结果不是节点集（即空字符串），则不会返回该值。发生其他错误时将返回失败（例如“invalid expression”）。

示例：

    xmlxpath(last(/host/xml_result),"/response/error/status")

[comment]: # ({/ab4c5ed4-b7fde6b3})

[comment]: # ({ba58f5e4-b8eeecec})
参见[所有支持的函数](/manual/config/triggers/expression#functions)。

[comment]: # ({/ba58f5e4-b8eeecec})
