1111
2222
3333
1111
2222
3333
用换行符把字符串隔开
删除重复项后得到如下答案:
1111
2222
3333
求正则表达式
3 个解决方案
#1
Dictionary 对象
描述
对象,用于存储数据关键字和条目对。
语法
Scripting.Dictionary
说明
Dictionary 对象与 PERL 关联数组等价。可以是任何形式的数据的条目被存储在数组中。每个条目都与一个唯一的关键字相关联。该关键字用来检索单个条目,通常是整数或字符串,可以是除数组外的任何类型。
下面的代码举例说明了如何创建一个 Dictionary 对象:
Dim d '创建一个变量
Set d = CreateObject(Scripting.Dictionary)
d.Add "a", "Athens" '添加一些关键字和条目
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
...
描述
对象,用于存储数据关键字和条目对。
语法
Scripting.Dictionary
说明
Dictionary 对象与 PERL 关联数组等价。可以是任何形式的数据的条目被存储在数组中。每个条目都与一个唯一的关键字相关联。该关键字用来检索单个条目,通常是整数或字符串,可以是除数组外的任何类型。
下面的代码举例说明了如何创建一个 Dictionary 对象:
Dim d '创建一个变量
Set d = CreateObject(Scripting.Dictionary)
d.Add "a", "Athens" '添加一些关键字和条目
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
...
#2
正则不是万能的。别为了用正则而正则。这个场景是正则是无能为力的。 楼上说的字典方法是一个很有效并且快速筛选重复的办法。
下面提供一个我之前写的VBS脚本。保存到文本文件然后后缀名改成vbs就可以了
下面提供一个我之前写的VBS脚本。保存到文本文件然后后缀名改成vbs就可以了
'描述:直接将要筛选相同行的文件拖到这个vbs文件上即可
'作者:sysdzw
'邮箱:sysdzw@163.com
'QQ:171977759
'12:51 2009-7-12
Dim strFileSource, strFileResult,t1
On Error Resume Next
strFileSource = wscript.Arguments(0)
strFileResult = Left(strFileSource, InStrRev(strFileSource, ".") - 1) & "_out.txt"
If strFileSource <> "" Then
t1=Time()
Set fso = CreateObject("scripting.filesystemobject")
Set stream = fso.opentextfile(strFileSource, 1, False)
Set stream2 = fso.opentextfile(strFileResult, 2, True)
Set dict = CreateObject("scripting.dictionary")
While Not stream.atendofstream
Line = stream.readline
If Not dict.Exists(Line) Then
Call dict.Add(Line, Null)
Call stream2.writeline(Line)
End If
Wend
stream.Close
stream2.Close
MsgBox "处理完毕!总计耗时 " & DateDiff("s",t1,Time) & " 秒。" & vbCrLf & vbCrLf & strFileResult, vbInformation, "Del Same Line QQ:171977759"
Else
MsgBox "no file!", vbExclamation, "Del Same Line QQ:171977759"
End If
#3
Option Explicit
Private Sub Command1_Click()
List1.Clear
Dim re As New RegExp
Dim ms As MatchCollection, m As Match, i As Integer, j As Integer
With re
.MultiLine = True
.Global = True
.IgnoreCase = True
.Pattern = "([^\n]+\n)"
Set ms = .Execute(Text1)
For i = 0 To ms.Count - 1
For j = 0 To i - 1
If ms(i) = ms(j) Then Exit For
Next
If j = i Then List1.AddItem ms(i)
Next
End With
Set re = Nothing
End Sub
#1
Dictionary 对象
描述
对象,用于存储数据关键字和条目对。
语法
Scripting.Dictionary
说明
Dictionary 对象与 PERL 关联数组等价。可以是任何形式的数据的条目被存储在数组中。每个条目都与一个唯一的关键字相关联。该关键字用来检索单个条目,通常是整数或字符串,可以是除数组外的任何类型。
下面的代码举例说明了如何创建一个 Dictionary 对象:
Dim d '创建一个变量
Set d = CreateObject(Scripting.Dictionary)
d.Add "a", "Athens" '添加一些关键字和条目
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
...
描述
对象,用于存储数据关键字和条目对。
语法
Scripting.Dictionary
说明
Dictionary 对象与 PERL 关联数组等价。可以是任何形式的数据的条目被存储在数组中。每个条目都与一个唯一的关键字相关联。该关键字用来检索单个条目,通常是整数或字符串,可以是除数组外的任何类型。
下面的代码举例说明了如何创建一个 Dictionary 对象:
Dim d '创建一个变量
Set d = CreateObject(Scripting.Dictionary)
d.Add "a", "Athens" '添加一些关键字和条目
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
...
#2
正则不是万能的。别为了用正则而正则。这个场景是正则是无能为力的。 楼上说的字典方法是一个很有效并且快速筛选重复的办法。
下面提供一个我之前写的VBS脚本。保存到文本文件然后后缀名改成vbs就可以了
下面提供一个我之前写的VBS脚本。保存到文本文件然后后缀名改成vbs就可以了
'描述:直接将要筛选相同行的文件拖到这个vbs文件上即可
'作者:sysdzw
'邮箱:sysdzw@163.com
'QQ:171977759
'12:51 2009-7-12
Dim strFileSource, strFileResult,t1
On Error Resume Next
strFileSource = wscript.Arguments(0)
strFileResult = Left(strFileSource, InStrRev(strFileSource, ".") - 1) & "_out.txt"
If strFileSource <> "" Then
t1=Time()
Set fso = CreateObject("scripting.filesystemobject")
Set stream = fso.opentextfile(strFileSource, 1, False)
Set stream2 = fso.opentextfile(strFileResult, 2, True)
Set dict = CreateObject("scripting.dictionary")
While Not stream.atendofstream
Line = stream.readline
If Not dict.Exists(Line) Then
Call dict.Add(Line, Null)
Call stream2.writeline(Line)
End If
Wend
stream.Close
stream2.Close
MsgBox "处理完毕!总计耗时 " & DateDiff("s",t1,Time) & " 秒。" & vbCrLf & vbCrLf & strFileResult, vbInformation, "Del Same Line QQ:171977759"
Else
MsgBox "no file!", vbExclamation, "Del Same Line QQ:171977759"
End If
#3
Option Explicit
Private Sub Command1_Click()
List1.Clear
Dim re As New RegExp
Dim ms As MatchCollection, m As Match, i As Integer, j As Integer
With re
.MultiLine = True
.Global = True
.IgnoreCase = True
.Pattern = "([^\n]+\n)"
Set ms = .Execute(Text1)
For i = 0 To ms.Count - 1
For j = 0 To i - 1
If ms(i) = ms(j) Then Exit For
Next
If j = i Then List1.AddItem ms(i)
Next
End With
Set re = Nothing
End Sub