首页 生活 百科 科技 职场 学习 宠物
当前位置: 首页 > 生活 >

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

314次浏览     发布时间:2023-03-06 07:20:03    

大家好,我是公众号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,保存一下插件就可以了。


注:插件位置在


至于你选择哪个方法看自己喜好。

三、多模拟器读取文本会出现读不到的情况。

有时候读一行删一行的目的是为了多个模拟器不重复读一行内容,但是这种方法是不行的,很容易出现同时读到同一行内容,这时会导致读不到内容

推荐方法是“排队读取”,具体方法看我另一篇文章教程。

【脚本讲解】多开模拟器读取同一文本不重复


=正文完=

你知道河北有什么特产好吃的?绝了!口水不止

初学画眉毛的技巧(新手掌握这些技巧分分钟画出气质标准眉)

干洗店需要什么设备(干洗店设备全套有哪些?)

咸水鸭怎么吃才最好(大厨教你学会这2步,做出香嫩多汁鸭肉)

怎样炒米粉好吃不粘锅(粉店老板教你一招,不粘锅不结坨)

衣服上的铁锈用牙膏可以吗(普普通通的牙膏的18种妙用)