• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[郭立员] [安卓按键]怎么保证写入文本的内容不重复 [复制链接]

1#

大家好,我是3分钟学堂的郭立员,今天给大家带来一个比较实用的去重复内容后写入文本的函数。


应用场景

这个函数的常见使用场景有这些~


①记录账号

②提取接码群的验证码

③采集各类信息资料


由于具备写入功能,其实所有需要写入文本的地方都可以用这个命令。


原理

在写入文本前,先将要写入的内容和文本里面的内容逐个进行比较,确认不重复在进行写入操作。


操作过程

①判断文本是否存在,防止由于不存在文本路径的报错,如果不存再新建一个文本。

  1. Dim path="/sdcard/pictures/abc.txt"
  2. If Dir.Exist(path) = 0 Then
  3. file.Write(path)
  4. End If
复制代码

②读取文本中原有内容,存入数组中

Dim arr=file.readlines(path)

③判断数组是不是空内容,因为首次写入的时候,文本是空内容,那么数组最大下标就是-1。这种首次写入的情况,就直接写入,无需判断是否重复。

  1. If UBOUND(arr) < 0 Then
  2. TracePrint "首次写入"
  3. End If
复制代码

④非首次写入,我们要遍历数组内容,这里有两种方式,一是遍历全部内容,二是遍历最新的几条写入内容。


之所以有两种情况,是它们各有优缺点,第一种方式:优点是准确,缺点是当内容非常多的时候,遍历时间会比较长。第二种方式:优点是速度快,缺点是没有那么准确。要求速度的情况下用第二种,数据不是特别多的情况下用第一种。

  1. Dim num
  2. If 第一种情况 Then
  3. num = UBOUND(arr)
  4. ElseIf 第二种情况 Then
  5. num=10
  6. End If
  7. For i = 0 To num
  8. TracePrint arr(i)
  9. Next
复制代码

⑤把要写入的内容和读取文本内容逐个比对,确认不重复写入文本第一行

  1. For i = 0 To 10
  2. If str = arr(i) Then
  3. Exit For
  4. End If
  5. If i = num Then
  6. file.WriteLine(path,1,str)
  7. End If
  8. Next
复制代码
细节注意

写入的内容在比对之前一定要转成字符串类型,因为遍历文本的内容是字符串,如果写入一个数字不转成字符串,因为数据类型的不同,虽然是同样的内容,也会认为是比对不同,从而重复写入。


给函数加入返回值,写入成功返回ture,写入失败返回false。


完整代码如下:


Dim str=16
Dim path="/sdcard/pictures/abc.txt"
traceprint WriteFile(path,0,str)
/*
此函数由公众号3分钟学堂提供,仅供学习使用
WriteFile命令参数说明
参数1:写入文本的路径,支持自动新建文本
参数2:文本全部匹配还是部分匹配,0:全部匹配,其他数字:部分匹配的行数,如10,就是匹配10行内容
参数3:要写入文本的内容
*/
Function WriteFile(path, n, str)
Dim num
If Dir.Exist(path) = 0 Then
file.Write(path)
End If
Dim arr=file.readlines(path)
If UBOUND(arr) < 0 Then
file.WriteLine path, 1, str
WriteFile=true
Else
If n = 0 Then
num= UBOUND(arr)
Else
num=n
End If
End If
For i = 0 To num
If cstr(str) = arr(i) Then
WriteFile=false
Exit For
End If
If i = num Then
file.WriteLine path, 1, str
WriteFile=true
End If
Next
End Function


如果file.writeline命令写入不了,可以使用file.append命令,只需要写入的内容+换行符


最后编辑郭立员 最后编辑于 2022-03-17 16:43:26
扫码免费获取我的基础教程【视频教程】
扫码下方二维码关注我的公众号:3分钟学堂

QQ交流群:936858410
2#

kkkkkkkkkkkkkkkkkkkkkkkk

3#

111111

4#

1111111111111

5#

学习了,好东西!!

6#

学习了

7#

看看学习学习

8#

学习一下

9#

这个贴真好

10#

学习

11#

光荣退役人员try他

12#

888888888888888888888888888

13#

一时半会

14#


15#

666666666666666

16#

学习了,好东西!!

17#

谢谢老师分享

18#

记录不重复

19#

顶顶顶顶顶的顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶大大大

20#

11111111111111111111

发新话题 回复该主题