一个txt文件 里面有很多类似的重复内容比如
1.txt内容为
固定格式为收入资料:本月个人收入:400
本月津贴:100
本月结算:500收入资料:本月个人收入:400
本月津贴:100
本月结算:500收入资料:本月个人收入:400
本月津贴:110
本月结算:510收入资料:本月个人收入:400
本月津贴:110
本月结算:510这样的 每次可能会有重复写入的情况 我想最后把结果过滤一下 把重复的内容全部自动替换掉 可以么?比如以上内容替换后应该是:收入资料:本月个人收入:400
本月津贴:100
本月结算:500收入资料:本月个人收入:400
本月津贴:110
本月结算:510
1.txt内容为
固定格式为收入资料:本月个人收入:400
本月津贴:100
本月结算:500收入资料:本月个人收入:400
本月津贴:100
本月结算:500收入资料:本月个人收入:400
本月津贴:110
本月结算:510收入资料:本月个人收入:400
本月津贴:110
本月结算:510这样的 每次可能会有重复写入的情况 我想最后把结果过滤一下 把重复的内容全部自动替换掉 可以么?比如以上内容替换后应该是:收入资料:本月个人收入:400
本月津贴:100
本月结算:500收入资料:本月个人收入:400
本月津贴:110
本月结算:510
Open "c:\test.txt" For Input As 1
str1 = StrConv(InputB$(LOF(1), 1), vbUnicode)
Close 1Dim astr() As String
astr = Split(str1, "收入资料:")'分割到数组'另外建一个动态数组
'循环遍历数组astr,处理每一个元素,如果有内容,判断是否与前一个相等;
如果相等,忽略,不想等,在新动态数组增加一个元素
Private Sub Command1_Click()
Dim strArr() As String
Dim Temp(3) As String
Dim strTemp As String
Dim strTemp1 As String
Dim arrCount As Long
Dim I As Long
Dim J As Long
Dim Answer As BooleanarrCount = 0
Open "d:\1.txt" For Input As #1
While Not EOF(1)
Line Input #1, strTemp
If strTemp = "收入资料:" Then arrCount = arrCount + 1
Wend
Close #1
ReDim strArr(3, arrCount)
Open "d:\1.txt" For Input As #2
Line Input #2, strTemp
Line Input #2, strTemp1
If strTemp = "收入资料:" And strTemp1 = Empty Then
Line Input #2, strArr(0, 0)
Line Input #2, strArr(1, 0)
Line Input #2, strArr(2, 0)
Line Input #2, strTemp
End If
I = 1
While Not EOF(2)
Answer = False
Line Input #2, strTemp
Line Input #2, strTemp1
If strTemp = "收入资料:" And strTemp1 = Empty Then
Line Input #2, Temp(0)
Line Input #2, Temp(1)
Line Input #2, Temp(2)
Line Input #2, strTemp
For J = 0 To I - 1
If Temp(0) = strArr(0, J) And Temp(1) = strArr(1, J) And Temp(2) = strArr(2, J) Then
Answer = True
End If
Next J
If Answer = False Then
strArr(0, I) = Temp(0)
strArr(1, I) = Temp(1)
strArr(2, I) = Temp(2)
I = I + 1
End If
End If
Wend
Close #2
Next J
End Sub
把strarr()写到文件就好了,记得是从0到I-1
Private Type gz '定义一个结构体,其中有三个字段
a(1 To 3) As Single
End Type
Private Sub Command1_Click()
Dim x$(4), a() As gz, n%, i%, j%, t As gz
Open "c:\test.txt" For Input As #1
Do Until EOF(1)
n = n + 1
ReDim Preserve a(n) '重定义动态数组,类型为自定义类型
Line Input #1, x(1) '依次读取四行内容,这里我的测试文件中没有空行,如果有空行,再加上读空行的语句即可
Line Input #1, x(2)
a(n).a(1) = Right(x(2), 3) '将需要的数据取出来赋给结构体
Line Input #1, x(3)
a(n).a(2) = Right(x(3), 3)
Line Input #1, x(4)
a(n).a(3) = Right(x(4), 3)
Loop
Close
For i = 1 To n - 1 '排序,将相同的记录放在一起,以方便过滤相同记录
For j = i + 1 To n
If a(i).a(3) > a(j).a(3) Then
t = a(i): a(i) = a(j): a(j) = t
End If
Next j
Next i
Open "c:\test1.txt" For Output As #1
For i = 1 To n
If a(i).a(1) & a(i).a(2) & a(i).a(3) <> a(i - 1).a(1) & a(i - 1).a(2) & a(i - 1).a(3) Then '如果当前三个数据串成一个字符串,与前一条记录的不同,则写入文件,注意我这里的数组从0开始的,可以保证第一条记录可以写入
Print #1, "收入资料:"
Print #1, "本月个人收入:" & a(i).a(1)
Print #1, "本月津贴:" & a(i).a(2)
Print #1, "本月结算:" & a(i).a(3)
End If
Next i
Close
MsgBox "ok"
End Sub