「按鍵精靈」為啥還有人問“文本怎么讀一行刪一行”? 按鍵精靈怎么用

大家好,我是公眾號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,保存一下插件就可以了 。
「按鍵精靈」為啥還有人問“文本怎么讀一行刪一行”? 按鍵精靈怎么用


注:插件位置在

至于你選擇哪個方法看自己喜好 。
三、多模擬器讀取文本會出現讀不到的情況 。
有時候讀一行刪一行的目的是為了多個模擬器不重復讀一行內容,但是這種方法是不行的,很容易出現同時讀到同一行內容,這時會導致讀不到內容
推薦方法是“排隊讀取”,具體方法看我另一篇文章教程 。
【腳本講解】多開模擬器讀取同一文本不重復

=正文完=

相關經驗推薦