mulesoft - 用于过滤变量值的 MEL 表达式
问题描述
我在变量中存储了一个值。它是一个 ID,看起来像 1-2823596-1 或 CAT-R131-L6267。现在我需要编写一个表达式,它根据 ID 的第一个值(即它是数字还是字母)过滤这个 ID。据此,我将把我的选择路由器。谁能让我知道如何写这个表达式,因为我对 Mulesoft 比较陌生
尝试使用给定的示例,但无法创建
enter code here { a: payload.a match {
case is Object -> 'OBJECT'
case is String -> 'STRING'
case is Number -> 'NUMBER'
case is Boolean -> 'BOOLEAN'
case is Array -> 'ARRAY'
case is Null -> 'NULL'
else -> 'ANOTHER TYPE' }, b: payload.b match {
case y is Object -> { 'Type': { 'OBJECT' : y} }
case y is String -> { 'Type': { 'STRING' : y} }
case y is Number -> { 'Type': { 'NUMBER' : y} }
case y is Boolean -> { 'Type': { 'BOOLEAN' : y} }
case y is Array -> { 'Type': { 'ARRAY' : y} }
case y is Null -> { 'Type': { 'NULL' : y} }
else -> { 'Type': { 'ANOTHER TYPE' : payload.b} } }}
也尝试使用子字符串
enter code here #[vars.reqTcpn == vars.reqTcpn[0..0] match[0-9]]
需要检查字符串的第一个值是字符还是数字,以便我可以选择路由器
解决方案
您使用的是 Mule 4,因此 MEL 已替换为 Dataweave 作为表达式语言。
在最近发布的 Mule 4.2 和 Dataweave 2.2.0 中,有一个新的 isNumeric 函数可以做到这一点:
import isNumeric from dw::core::Strings output application/java --- isNumeric(vars.reqTcpn[0 to 0])
https://docs.mulesoft.com/mule-runtime/4.2/dw-strings-functions-isnumeric
MulE 4 版本 < 4.2 您可以使用子字符串[0 to 0]
和match
正则表达式的组合来检查它的数字。然后sizeOf
检查是否至少有 1 个匹配项:
#[sizeOf(match(vars.reqTcpn[0 to 0], '[0-9]')) > 0]
推荐阅读
- pointers - 我在 Fortran 中实现指针交换是否正确?
- keras - 负维度大小由 1 减去 6 导致的 'conv1d_2/convolution/Conv2D' (op: 'Conv2D') 输入形状:[?,1,1,5], [1,6,5,5]
- haskell - Haskell / Conduit:逐行读取文件
- python - subprocess.check_output() 中的 stderr=subprocess.STDOUT 有什么用?
- r - 如何从成对相关data.frame中获取相关矩阵?
- python - 来自 Django 的开发服务器端口绑定错误的 ptvsd 远程调试
- r - 如何在 R Studio 中从数据表中绘制选定的行
- python - 使用 sshtunnel 模块的 SSH 隧道不允许空密码
- grails - 如何更改 grails 项目中的 URL?
- javascript - 试图避免在ajaxcall之后滚动条返回开始