Nifi常用表达式文档

本文档详细介绍了NiFi中的表达式语言,包括字符串操作如大小写转换、去除空格、截取、附加与追加,以及字符串替换、搜索、数学运算、逻辑运算和时间函数等功能。内容涵盖各种函数的描述、参数、返回值和实例,帮助用户掌握NiFi的表达式使用技巧。
摘要由CSDN通过智能技术生成

文章目录

表达式函数

字符串

大小写转换

toUpper
描述

将小写转为大写

参数

返回值

转换后的大写字符串

案例

假设 流文件 存在一个属性 demo,其值为demoDEMO

表达式 输出结果
${demo:toUpper()} DEMODEMO
toLower
描述

将大写转为小写

参数

返回值

转换后的小写字符串

案例

假设 流文件 存在一个属性 demo,其值为demoDEMO

表达式 输出结果
${demo:toLower()} demodemo

去除字符串前后的空格

trim
描述

和Java中的trim功能一致,都是去除字符串前后的空格(不会去掉字符串中间的空格)

参数

返回值

去除前后空格后的字符串

案例

假设 流文件 存在一个属性 demo,其值为demo(前后各有一个空格)

表达式 输出结果
${demo:trim()} demo

字符串截取

substring
描述

根据开始下标和结束下标截取字符串的一部分,必须提供开始下标,结束下标默认为字符串尾

参数
  1. 截取的起始下标
  2. 截取的结束下标
返回值

截取后的字符串内容

注意
  • 下标从0开始
  • 下标含头不含尾
  • 索引必须是数字,否则会报错
  • 开始下标必须小于结束下标,否则报错
  • 如果超长(指目标字符串过短)将返回空白字符串

假设 流文件 存在一个属性 demo,其值为demo123

案例
表达式 输出结果
${demo:substring(0,1)} d
${demo:substring(0,4)} demo
${demo:substring(2)} mo123
${demo:substring(4)} 123
${demo:substring(${demo:length():minus(3)})} 123
案例解释
  1. 从第0个字符开始,到第1个字符,总共取1个字符(不包括第一个字符)
  2. 从第0个字符开始,到第4个字符,总共取4个字符(不包括第4个字符)
  3. 从第2个字符开始,到字符串最后(未提供结束下标)
  4. 从第4个字符开始,到字符串最后(未提供结束下标)
  5. 取字符串最后3个字符(首先获取到字符串长度,该长度减去要获取的长度即是需要截去的长度)
substringBefore/substringBeforeLast
描述

substringBefore:截取从首部开始,到指定字符结束的字符串(正序)

substringBeforeLast:截取从首部开始,到指定字符结束的字符串(倒序)

这两个参数非常类似,其都是从开始取值,到指定字符结束,如果找不到目标字符,都会返回字符串的所有内容;唯一的区别在于,substringBefore是从当前位置向后寻找字符,而substringBeforeLast刚好相反,它是从后向前寻找

参数
  1. 匹配查找的字符串
返回值

截取的内容

注意
  • 如果找不到指定的字符串,会将源字符串原样返回
  • substringBefore从头开始substringBeforeLast从尾开始
案例

假设 流文件 存在一个属性 demo,其值为demo123demo123

表达式 结果
${demo:substringBefore('o1')} dem
${demo:substringBeforeLast('o1')} demo123dem
${demo:substringBefore('sss')} demo123demo123
${demo:substringBeforeLast('sss')} demo123demo123
案例解释
  1. 从头开始寻找o1 ,并返回从0下标开始,到o1字符串为止的中间字符
  2. 从尾开始寻找o1 ,并返回从0下标开始,到o1字符串为止的中间字符
  3. 从头开始寻找sss ,但源字符串不包括sss ,因此直接返回源字符串
  4. 从尾开始寻找sss ,但源字符串不包括sss ,因此直接返回源字符串
substringAfter/substringAfterLast
描述

substringAfter:截取从末尾开始,到指定字符结束的字符串(正序)

substringAfterLast:截取从末尾开始,到指定字符结束的字符串(倒序)

这两个函数非常类似,其都是从末尾取值,到指定字符结束,如果找不到目标字符,都会返回字符串的所有内容;唯一的区别在于,substringAfter是从当前位置向后寻找字符,而substringAfterLast刚好相反,它是从后向前寻找

参数
  1. 匹配查找的字符串
返回值

截取的内容

注意
  • 如果找不到指定的字符串,会将源字符串原样返回
  • substringAfter从头开始substringAfterLast从尾开始
  • 截取时不包含目标字符串
案例

假设 流文件 存在一个属性 demo,其值为demo123demo123

表达式 结果
${demo:substringBefore('o1')} 23demo123
${demo:substringBeforeLast('o1')} 23
${demo:substringBefore('sss')} demo123demo123
${demo:substringBeforeLast('sss')} demo123demo123
案例解释
  1. 从头开始寻找o1 ,并返回从字符串结束下标开始,到o1字符串为止的中间字符
  2. 从尾开始寻找o1 ,并返回从字符串结束下标开始,到o1字符串为止的中间字符
  3. 从头开始寻找sss ,但源字符串不包括sss ,因此直接返回源字符串
  4. 从尾开始寻找sss ,但源字符串不包括sss ,因此直接返回源字符串

附加与追加

append/prepend
描述

append:在源字符串后追加字符串

prepend:在源字符串前附加字符串

append和prepend的区别在于,append是在源字符串后追加,prepend是在源字符串之前附加,> 使用时注意甄别它们之间的区别

参数
  1. 附加或追加的字符串
返回值

添加后的字符串

注意
  • 如果源字符串为空,无论那个函数都会返回其本身
案例

假设 流文件 存在一个属性 demo,其值为demo

表达式 输出结果
${demo:append(‘123’)} demo123
${demo:prepend(‘123’)} 123demo
案例解释
  1. 在字符串后附加
  2. 在字符串前附加

字符串替换

replace/replaceFirst
描述

replace:用另一个字符串替换源字符串中的所有目标字符串(文本替换)

replaceFirst:仅替换源字符串中第一次出现的目标字符串

参数
  1. 要匹配的字符串或正则表达式
  2. 目标字符串
返回值

替换后的字符串

注意
  • replaceFirst 函数仅替换一次
  • replace 函数会替换所有
案例

假设 流文件 存在一个属性 demo,其值为demo123demo123

表达式 输出结果
${demo:replace(‘123’, ‘456’)} demo456demo456
${demo:replaceFirst(‘123’, ‘456’)} demo456demo123
案例解释
  1. 替换源字符串中所有的 123 为 456
  2. 仅替换源字符串中第一次出现的 123 替换为 456

字符串搜索

startsWith/endsWith
描述

startsWith:判断给定的参数是否是源字符串的开始

endsWith:判断给定的参数是否是源字符串的结束

参数
  1. 要进行比较的字符串
返回值

Boolean

注意

案例

假设 流文件 存在一个属性 demo,其值为demo123

表达式 输出结果
${demo:startsWith(‘demo’)} true
${demo:endsWith(‘123’)} true
案例解释
  1. 判断源字符串是否以 demo 开始
  2. 判断源字符串是否以 123 结束
contains
描述

判断源字符串中是否包含给定的参数

参数
  1. 要进行比较的参数
返回值

Boolean

注意
  • 在字符串的任意位置匹配即认为符合
案例

假设 流文件 存在一个属性 demo,其值为demo123

表达式 输出结果
${demo:contains(‘456’)} false
${demo:contains(‘mo12’)} true
案例解释
  1. 判断源字符串中是否包含 456
  2. 判断源字符串中是否包含 mo12
in
描述

判断源字符串是否包含在给定参数的字符串列表中

参数
  1. 进行比较的字符串列表
返回值

Boolean

注意

案例

假设 流文件 存在一个属性 demo,其值为demo

表达式 输出结果
${demo:in(‘123’, ‘456’, ‘aaa’)} false
${demo:in(‘123’, ‘456’, ‘demo’)} true
案例解释
  1. 判断 demo 是否包含在 123、456、aaa
  2. 判断 demo 是否包含在 123、456、demo
find/matches
描述

根据给定的正则表达式,在源字符串中寻找匹配项

find:部分匹配即可

matches:必须和给定的参数完全一致

参数
  1. 正则表达式(表达式)
返回值

Boolean

注意
  • find要求部分匹配即可,matches必须完全匹配
  • 正则表达式的写法须符合java的规范
案例

假设 流文件 存在一个属性 demo,其值为demo123

表达式 输出结果
${demo:find(’[Dd]em[Oo]’)} true
${demo:find(’[Dd]em[Oo].*’)} false
${demo:matches(’[Dd]em[Oo]’)} false
案例解释
  1. 在源字符串中寻找是否具有匹配的字符串(D、O允许大小写)
  2. 在源字符串中寻找是否具有匹配的字符串(D、O允许大小写,且具有.*后缀)
  3. 在源字符串中寻找是否具有匹配的字符串(D、O允许大小写),matches要求完全匹配,因此返回false
indexOf/lastIndexOf
描述

在源字符串中寻找给定参数的索引

indexOf:正序查找(从前向后)

lastIndexOf:倒序查找(从后向前)

参数
  1. 要寻找的字符串
返回值

Number

注意
  • 如果找不到给定的参数,将返回 -1
  • 索引从 0 开始计算
  • 如果有多个匹配项,将返回 第一次 找到的匹配项的索引
案例

假设 流文件 存在一个属性 demo,其值为demo123

表达式 输出结果
${demo:indexOf(‘e’)} 1
${demo:lastIndexOf(‘e’)} 5
案例解释
  1. 在源字符串中 从前向后 查找字符 e
  2. 在源字符串中 从后向前 查找字符 e

字符串填充

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值