(一) 分别提取后进行判断
已经知道比较符有6种,所以首先要确定的就是参数使用的是哪一个。我们判断是单字符还是双字符判断符,我们通过代码来生成一个单双字符的记录格式数据,当然前提还要有一个容错机制,也就是参数为空值的处理。
判断符提取=
if 表达式=null
then 表达式
else
[
双符号=
List.Select(List.Transform({">=","<=","<>"},
(x)=>if Text.Contains(表达式,x)
then x
else null
),
(a)=> a<>null
){0},
单符号=
List.Select(List.Transform({"=","<",">"},
(x)=>if Text.Contains(表达式,x)
then x
else null),
(a)=> a<>null
){0}
],
这里生成了一个记录的格式,如果判断符号是双字符,则双字符判断和单字符判断都会产生内容,如图所示(假定判断符是>=);如果判断符号是单字符,则双字符判断会返回错误值,如图所示(假定判断符是>)。
判断符为“>=”时结果
[图片上传失败...(image-9ef0e1-1576218107088)]
判断符为“>”时结果
[图片上传失败...(image-5ee9cc-1576218107088)]
接着就相对比较容易了,只需要确定双符号是否存在,如果存在就以双字符作为判断符,如果不存在则以单字符作为判断符,代码如下。
try [判断符提取][双字符] otherwise [判断符提取][单字符]
(二) 提取单独的表达式后进行合并
既然是判断表达式,实际上也就只有“=”,“>”,“<”组合而成,所以我们只需要提取这3种,然后组合合并即可。
Text.Combine(
List.Transform({"<",">","="},
(x)=>List.Select(Text.ToList(表达式),
(y)=>y=x
)
)
)
备注:请注意循环时表达式的顺序,“=”需放在循环的最后,"<"需放在">"前面。
(三) 通过表达式的位置来进行提取
Text.Middle(表达式,
0,
List.Max(List.Transform({"=",">","<"},
each Text.PositionOf(表达式,_)
)
)+1
)
网友评论