Power Query 如何判断字符转中是否包含字母

给出一个字符串列表,要求判断哪个字符串含有字母,哪个字符串不含字母:

Power Query 如何判断字符转中是否包含字母

使用Power Query来判断有两种基本方法:

当然也可逆向思维,我们删除数字后判断长度,也是一种方法,同样这个思路用List类函数与Text类函数都有对应的函数支持:

List.PositionOfAny

这是一个返回对应字符位置的函数,返回负数是没有找到对应的项目,否者就是有对应的项目。

当然要把字符串转换成列表,然后才能查找:

Power Query 如何判断字符转中是否包含字母

我们用Text.ToList函数把字符串转成列表

= Text.ToList(L1{0})

然后查找字母位置:

Power Query 如何判断字符转中是否包含字母

= List.PositionOfAny(TL,{"a".."z","A".."Z"})

{"a".."z","A".."Z"}包含了所有的大小写英文字母,“12a3b4”中字母的位置是2,这里返回的是第一个字母的位置,位置是从0开始的。

整个字符串的判断这样来做:

Power Query 如何判断字符转中是否包含字母

= List.Transform(L1,

(x)=>x&"-"&(if List.PositionOfAny(Text.ToList(x),{"a".."z","A".."Z"})>0 then "有字母" else "无字母"))

用一个循环过程来逐个字符串进行判断。

Text.PositionOfAny

这个函数要比用列表类函数简单些,不需要转换成列表,直接进行位置判断:

Power Query 如何判断字符转中是否包含字母

= Text.PositionOfAny(L1{1},{"a".."z","A".."Z"})

L1{1}="1234",返回的结果是-1就表名这个字符串中没有字母

我们把这个函数替换到循环中:

Power Query 如何判断字符转中是否包含字母

= List.Transform(L1,

(x)=>x&"-"&(if Text.PositionOfAny(x,{"a".."z","A".."Z"})>0 then "有字母" else "无字母"))

这个公式要比第一种方法简洁很多。

最后我们用Text.Remove、Text.Length写一个公式来看看能否实现这个功能:

Power Query 如何判断字符转中是否包含字母

= List.Transform(L1,

(x)=>x&"-"&(if Text.Length(Text.Remove(x,{"0".."9"}))=0 then "无字母" else "有字母"))

这个公式看起来比第二个公式要复杂一些,但是这个公式应该更有效率,查找52次字母和删除10个数字比起来,肯定删除数字更有效率。

同样的一个问题,不同的思路解决问题的效率也会稍有不同,这个效率问题在数据量较小的时候,并不明显,当数据量很大的时候,效率不高的公式,就会拖慢整体的运行速度。

展开阅读全文

页面更新:2024-05-14

标签:字母   负数   大小写   字符串   公式   函数   简洁   字符   思路   效率   位置   数字   方法   项目   数据   列表   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top