按键精灵字符处理 获取一大段字符的一段

按 键 工 程 师 ■ 兼 职

最先体验按键精灵X,且提交有效反馈的奖励勋章

俩小福娃给大家拜年啦!

抗战胜利70周年活动的专属勋章

按键14周年庆纪念勋章
按键14周年庆纪念勋章(360天)

按键学院专属勋章,按键学院学员或文章被院刊收入可领取

商业小精灵限时活动勋章。

马年纪念勋章(360天)

龙年纪念勋章(360天)

十周年勋章(360天)

兔年纪念勋章(360天)

鼓励积极回复,但注意不要灌水哦

积极帮助新手(可向管理员进行申请)

学有所成勋章,新手步入按键学堂的第一枚勋章

按键论坛的实习版主专属勋章

资深按键用户的尊贵荣誉勋章

按键论坛的管理团队专属勋章

注:你好 却是存在部分系统问题 引起的WQM无法查询/不显示 可通过<精易论坛>的<精易编程助手>查询<元素特征>


按键精灵手机版2.5基础教程

8.字符串、文本、命令库、插件

上一节我们讲了数据类型,知道了比较大小时将字符串转换成整数比较适合,但是也有一些不需要转换反而更好的情况,例如时间字符串的比较,我们先来获取一下网络时间:

我们可以得到这样的一个运行结果:


毋庸置疑,这是一个字符串,如果我们需要用来比较时间,那么需要使用字符串命令将字符串处理函数,提取年月日时分秒,并跟自己设置的时间进行逐一比较,需要判定6次,但是如果直接使用字符串比较,那么只需要一次判定,我们根据获取的网络时间的格式,写上同样格式的日期来进行比较:

可以发现,能够正常的判断出还未到自定义时间,我们将自定义时间设置的早一天试试:



经过尝试,我们发现字符串也是可以比较的,并且有时候确实更加方便,但是什么时候才能用字符串比较呢?可能有很多地方,不可能全部去记住,那么我们就应该了解字符串比较能够进行的原因,字符串比较采用的是逐位比较的方式,将比较的两个字符串的每一位都进行比较,比如“2015”和“2016”两个字符串比较,会先比较第一位的字符,两个都是“2”,那么继续比较下一位,直到“5”和“6”这两个字符,得出“6”大于“5”的结果,那么字符串“2016”就大于“2015”。当然,逐位的比较并不是直接进行比较,而是都转换成ANSI码进行比较,我们可以轻松的在网上找到基本上所有字符的ANSI码。

通过之前的字符串学习,我们懂得了如何分割字符串,于是可以在UI界面去写上所有的账号,然后脚本中获取并分割,然而当账号多的时候,你就明白手机上的输入是多么的蛋疼,这时候,我们可以使用文件的读取来解决这个问题,有的童鞋会说文件并不单单指文本,这没错,但是大部分的文件操作其实都是文本操作,或者说,都当成文本来操作,因此。。。不要在意这种细节~ 咳咳,继续,我们可以在电脑上写好所有的账号,保存在文本文档里,传输到手机内,而脚本直接读取此文件来获取账号。我们来看看有关于文件的操作:

归纳起来也就两种:读与写。我们来尝试一番,我们在桌面上新建一个text.txt文档,打开后写入test并保存退出,将模拟器的共享文件夹设置到桌面,然后在脚本中写入:

  1. 返回值 = File.Read("XXXX") //XXXX为共享目录的路径,手机和模拟器不同,多种模拟器也不同
运行一下,我们就可以获取到文本内的内容了:

为了功能的重复使用,我们前面断断续续有写了一些函数,比如比大小的那个函数,可以在每个脚本都加入这些,因为他们并不依赖其他部分,不是专属于某一个游戏或应用,随着自己写的这些函数越来越多,每个脚本都加入这些好累啊(代码一长眼睛都花了,效率直线下降啊有木有),有什么办法可以一劳永逸呢?每当我这么提问的时候那肯定是有办法的啦,我们可以将自己写的这些函数做成命令库插件,自己的专属哦! 先来回顾一下最前面的环境搭建的内容,我们有提到的几个文件夹,其中有一个commandLib文件夹,没错,自定义的命令库就应该写在这儿,我们打开这个文件夹:

恩,完全不知道什么意思。。。咳咳,我们发现同一个文件名有3种后缀,都打开看看很快就能知道.mql后缀的才是需要我们写的(其他两种有乱码啊有木有,不用管他们,这是自动生成的)。我们使用文本文档打开CmdLibUtil.mql后得到:

相信详细看过之前教程的很容易就知道这就是一个相加的函数。我们来看看在脚本中怎么用到这个:

没错,只需要在文件最上面加入完整(包括后缀)命令库的名称,使用里面的命令加上命令库名称(不包括后缀)与函数名就可以使用命令库里的函数,跟使用按键自带的命令并没有多大的区别。 如果想偷懒,我们可以直接在默认存在的几个命令库插件里增加函数,但是如果自己新建一个命令库,要记得将命令库同步到手机上的按键精灵,连接手机,commandLib文件夹中的同步命令库.bat文件双击一下就好了(或者手动将文件拷贝到手机中按键精灵的commandLib文件夹中)。 我们说了制作自己的命令库,但是本质上命令库并没有脱离按键的那些命令,只是进行了一些封装,那么我们怎么来实现目前按键没有的命令呢?比如我们写了一个数组,需要为得出数组长度并对数组排序(比如从大到小),首先,我们需要知道他的长度,手快的童鞋立马啪啪啪写出了一个函数:

  1. 获取数组长度 = 长度

恩,并没有问题,然后排序的时候,傻眼了,按键并没有排序的功能,自己写的话感觉好复杂啊,需要用到算法(可以百度一下排序算法)那么我们来使用lua插件完成这个操作吧,lua自带了一些排序命令(使用的冒泡算法),我们可以直接使用。

糟糕,没有lua基础怎么办!也不要紧,我们直接现学,百度一下 lua 排序:

就决定是你了----第一个!很容易就找出排序在lua中的命令是table.sort(arr):

命令也找到了,是时候做成插件放到按键中使用了。按键的插件需要一点点的改变,我们先来看看官方的插件是怎么做的,依旧是找到按键的目录,之前说过的3个文件夹中的plugin文件夹,我们随便打开一个lua插件看看,就DateTime.lua吧,英语好的童鞋可以立马知道这是时间插件,那么对应的肯定是年月日的获取,我们挑一个看看就好了:

发现就语法格式不一样,我们依样画葫芦写上:

这样一个简单的插件就完成了,使用插件的方式和自定义命令库是一样一样的!赶紧去试试吧!(lua插件适合想深入研究的人去做,实际上按键的功能基本上能够满足我们的需求)


近来因脚本需要写了个比较冷门的功能

第一次写 Function 函数 力争稳定,繁琐之处还望海涵

《删除两个字符之间的内容》

[code]Function 删除两个字符之间的内容(原字符串,分割字符1,分割字符2)

Dim 第1分隔符位置,第2分隔符位置,前段内容,后段内容

第1分隔符位置=InStr(原字符串,分割字符1)

第2分隔符位置=InStr(第1分隔符位置,原字符串,分割字符2)

后段内容=Mid(原字符串,第2分隔符位置)

第2分隔符位置=InStr(原字符串,分割字符2)

后段内容=Mid(原字符串,第2分隔符位置)


我要回帖

更多关于 按键精灵字符处理 的文章

 

随机推荐