前言:
目前兄弟们对“javastring判断包含字符”可能比较关切,你们都需要分析一些“javastring判断包含字符”的相关资讯。那么小编也在网络上网罗了一些对于“javastring判断包含字符””的相关知识,希望兄弟们能喜欢,咱们一起来了解一下吧!给出一个字符串列表,要求判断哪个字符串含有字母,哪个字符串不含字母:
使用Power Query来判断有两种基本方法:
一种使用List类函数来判断:List.PositionOfAny一种使用Text类函数来判断:Text.PositionOfAny
当然也可逆向思维,我们删除数字后判断长度,也是一种方法,同样这个思路用List类函数与Text类函数都有对应的函数支持:
List.RemoveMatchingItems、List.CountText.Remove、Text.LengthList.PositionOfAny
这是一个返回对应字符位置的函数,返回负数是没有找到对应的项目,否者就是有对应的项目。
当然要把字符串转换成列表,然后才能查找:
我们用Text.ToList函数把字符串转成列表
= Text.ToList(L1{0})
然后查找字母位置:
= List.PositionOfAny(TL,{"a".."z","A".."Z"})
{"a".."z","A".."Z"}包含了所有的大小写英文字母,“12a3b4”中字母的位置是2,这里返回的是第一个字母的位置,位置是从0开始的。
整个字符串的判断这样来做:
= List.Transform(L1,
(x)=>x&"-"&(if List.PositionOfAny(Text.ToList(x),{"a".."z","A".."Z"})>0 then "有字母" else "无字母"))
用一个循环过程来逐个字符串进行判断。
Text.PositionOfAny
这个函数要比用列表类函数简单些,不需要转换成列表,直接进行位置判断:
= Text.PositionOfAny(L1{1},{"a".."z","A".."Z"})
L1{1}="1234",返回的结果是-1就表名这个字符串中没有字母
我们把这个函数替换到循环中:
= List.Transform(L1,
(x)=>x&"-"&(if Text.PositionOfAny(x,{"a".."z","A".."Z"})>0 then "有字母" else "无字母"))
这个公式要比第一种方法简洁很多。
最后我们用Text.Remove、Text.Length写一个公式来看看能否实现这个功能:
= List.Transform(L1,
(x)=>x&"-"&(if Text.Length(Text.Remove(x,{"0".."9"}))=0 then "无字母" else "有字母"))
这个公式看起来比第二个公式要复杂一些,但是这个公式应该更有效率,查找52次字母和删除10个数字比起来,肯定删除数字更有效率。
同样的一个问题,不同的思路解决问题的效率也会稍有不同,这个效率问题在数据量较小的时候,并不明显,当数据量很大的时候,效率不高的公式,就会拖慢整体的运行速度。
标签: #javastring判断包含字符