「按键精灵」为啥还有人问“文本怎么读一行删一行”? 按键精灵怎么用

大家好,我是公众号3分钟学堂的郭立员~
前言
按理说这个问题很好解决,读一行和删一行都有对应的命令,读一行用file.readline , 删一行用file.deleteline,那为啥还总有人问这个问题?
我觉得有这么几种可能性:
一、刚刚接触按键精灵的新手
对命令不熟,不知道用什么命令 , 这种情况我们不在这期文章的讨论范围 。
二、系统兼容性问题
举个例子,我用脚本往文本里面写入4行内容,代码如下:
Dim path="/sdcard/pictures/xx.txt"file.Write (path)Dim arr={1,2,3,4}file.WriteLines(path,arr)在不同电脑系统上显示的结果是不一样的,在win10系统中文本是分行的,而在win7系统中,文本是只有1行 。效果如图所示:

「按键精灵」为啥还有人问“文本怎么读一行删一行”? 按键精灵怎么用

造成这个原因是因为文本换行机制:
在win7系统中文本换行需要在文字行结尾处加上 \r\n
在win10系统中文本换行只需要在文字行结尾处加上 \n
\r 回车符
\n 换行符
我们用脚本写入文本内容使用的是file.WriteLines 命令,打开file插件,看一下这个命令的源码:

在源码中可以看到把数组写入命令,就是循环写入每一行内容,并且在行结尾出加上\n实现换行 。
因为缺少\r导致在win7系统中,看不到换行效果,但是仅仅是在文本中看不到换行效果 , 并不代表没有 。
当使用其他文本工具打开文本时 , 还是会看到换行效果的 。
①用notepad打开

②用模拟器打开


那上面说的这个兼容性对我们“读一行删一行”的操作有什么影响呢?
假设你使用的是win7系统
你先有个xx.txt的文本,文本内容是

然后执行“读一行删一行”的操作
Dim txt=file.readline("/sdcard/pictures/xx.txt",1)TracePrint txtfile.DeleteLine "/sdcard/pictures/xx.txt", 1
执行完操作后,文本内容变成这样了,看起来像一行,仅仅是看着像一行

这时有的人就懵逼了,我就删除了第1行,为啥所有行都合并到一起了 。
那问题出在哪?
出在file.deleteline命令,也就是删除指定行的内容:
可能你会有个误区 , 删除文本行就是打开文本以后找到指定行,把整行内容删掉,然后再去掉空行 , 整个删除操作是在文本内进行的 。
其实并不是,删除操作是把所有内容先读取出来,然后删掉不要的内容 , 在写回文本 。
在这个过程中,有一个写入文本的操作 , 也就是用到上面说的file.WriteLines 命令,所以就存在win7和win10兼容性的问题,导致看不到换行效果 。
插件中file.deleteline命令的源码中看到调用writelines函数
「按键精灵」为啥还有人问“文本怎么读一行删一行”? 按键精灵怎么用


那怎么解决这个问题?
①不去管它,因为只有在win7文本有问题,在其他编辑器或者在win10上没问题,也不影响脚本读取 。
【「按键精灵」为啥还有人问“文本怎么读一行删一行”? 按键精灵怎么用】②实在看着费劲 , 也可以改成
改一下file插件中的writelines命令
也是小改动,就是在\n前面加上一个\r,保存一下插件就可以了 。
「按键精灵」为啥还有人问“文本怎么读一行删一行”? 按键精灵怎么用


注:插件位置在

至于你选择哪个方法看自己喜好 。
三、多模拟器读取文本会出现读不到的情况 。
有时候读一行删一行的目的是为了多个模拟器不重复读一行内容,但是这种方法是不行的,很容易出现同时读到同一行内容,这时会导致读不到内容
推荐方法是“排队读取”,具体方法看我另一篇文章教程 。
【脚本讲解】多开模拟器读取同一文本不重复

=正文完=

相关经验推荐