首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

按键精灵——数组的应用(二)

这是奔跑的键盘侠的第130篇文章

作者|我是奔跑的键盘侠

来源|奔跑的键盘侠(ID:runningkeyboardhero)

转载请联系授权(微信ID:ctwott)

数组的应用,上一期讲了Array、UBound、LBound,这期我们继续将另外两个函数,Split函数和Filter函数。

1

Split函数

这个Split函数,软件中语法介绍是这样写的:返回基于 0 的一维数组,其中包含指定数目的子字符串。

简单一点讲,就是针对一维数组量身定制的函数。但是呢,它有一个很强大的功能,就是可以把一个变量拆分成一个数组,很cool有木有

软件语法介绍中的根据字母x把一个单词拆分成多部分,

MyString = Split("VBScriptXisXfun!", "x", -1, 1)

里面的参数后两个多数情况可以省略。

再举个其他的例子,比如我要把txt文本中的log日志,给分行提取出来:

Text = Plugin.File.ReadFileEx("C:\record_log.txt")

MessageBox Text

MyArray = Split(Text, "|")

For i=0 to UBound(MyArray)-1

TracePrint "第 " & i+1 &" 行文本内容为:"& MyArray(i)

Next

txt读取出来的结果会有个竖线分隔符,所以这里用弹窗输出一下看看:

txt中共4行内容,弹窗每行中间有个竖线分隔符,注意末尾的地方也有一个。换句话说,Text被竖线分隔符切割成了5段,只不过前面4段里有内容,最后一段为空。

so,我们循环下标i从0开始,剔除最后一行,就是UBound(MyArray)-1了。

不过呢,txt里面也经常会中间某行内容为空,我还是建议大家老老实实去判断一下元素值真假,挺有必要的

调试区的输出结果,我也贴一下:

具体的应用场景:

比如通讯录,或者配置表信息,代码复杂了,就需要把某些内容,存到本地文件中,运行代码的时候直接去调用。

这样的好处是:我们每次要补充通讯录信息,或者修改配置表参数时,直接去相应的本地文件里修改即可,而不是去源代码里面去改。。因为,一个不小心改到不应该改的内容,很容易出现什么意外神马的,那就呵呵呵呵了…………

于是,我们要把上述类似的信息,写到本地文件中。然后要去提取相应的信息,几乎都会用到Split函数。

比如一个通讯录:

可以直接Plugin.File.ReadFileEx函数读取所有内容,然后Split(Text, "|") 分割成一行一行的。接着,再Split(Text, ":") 分隔成姓名和号码。再通过判断语句,就找到了对应姓名的号码。

上一期我们有提到For Each i In的语法,可以替代For i=0 to UBound(MyArray)-1,这里为了大家熟悉数组的几个函数用法,暂时就这么用吧。我是更推荐试用Each In的语法,更好用

2

Filter函数

讲真,这个函数之前从未用过,自然也不知道该怎么用,网上介绍几乎木有。仅凭软件上语法介绍和案例,测试英文ok,中文出现一个未知bug,后来bug自己消失了,索性就来叨叨这个函数已知的用途吧。

先贴一下软件自带的语法示例:

代码语言:javascript
复制
MyArray(0) = "Sunday"
MyArray(1) = "Monday"
MyArray(2) = "Tuesday"
MyIndex = Filter(MyArray, "Mon")

要注意的是,最后的MyIndex也是一个数组哦,必须用下标才能读取出来。

说白了,就是过滤筛选一下,含有关键字的值,有点类似excel中的“查找所有”功能。

那要如何使用呢?

上一段讲的Split最后一段的最后一句,通过判断语句,找到对应的姓名号码,可以直接用Filter来实现。代码如下:

Text = Plugin.File.ReadFileEx("C:\Users\dell\Desktop\号码簿.txt")

MyArray = Split(Text, "|")

MyIndex = Filter(MyArray,"小明")

直接就能返回小明这行的信息,再提取出号码即可。But,有个问题,就像excel检索一下,包含“小明”二字的单元格,可能是干扰项,比如王小明、李小明、小明三,这些都不是我们想要的。

所以呢,这个Filter函数用于初步筛选是OK的,要想万无一失,还需要对筛选完的值进行二次校验,也就是再次使用判读语句,进行完全匹配。

隐隐的觉得Filter是一个非常牛逼的函数,因为Python中Filter是可以把过滤条件设置为函数名,比如写一个筛选偶数的函数,直接把“小明”替换成函数名,是可以直接过滤出数组中的偶数的。

可是按键精灵的Filter,调试了无数遍,很多Python的功能它并不适用。我知道它功能肯定是弱化了,已经失去了它该有的强大。不过也不排除潜在的隐藏功能没有被发掘,容我再好好思考一番,想到了再说吧

下一篇
举报
领券