已经知道比较符有6种,所以首先要确定的就是参数使用的是哪一个。我们判断是单字符还是双字符判断符,我们通过代码来生成一个单双字符的记录格式数据,当然前提还要有一个容错机制,也就是参数为空值的处理。
判断符提取=if 表达式=nullthen 表达式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} ],
这里生成了一个记录的格式,如果判断符号是双字符,则双字符判断和单字符判断都会产生内容,如图所示(假定判断符是>=);如果判断符号是单字符,则双字符判断会返回错误值,如图所示(假定判断符是>)。
判断符为“>=”时结果
判断符为“>”时结果
接着就相对比较容易了,只需要确定双符号是否存在,如果存在就以双字符作为判断符,如果不存在则以单字符作为判断符,代码如下。
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 )
如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。