问题说这一切都真的,但......
我正在扫描一个文件,寻找与某个正则表达式模式匹配的行,然后我想打印出符合但按字母顺序排列的行.我确定这是微不足道的,但vbscript不是我的背景
我的数组定义为
Dim lines(10000)
Run Code Online (Sandbox Code Playgroud)
如果这有任何区别,我正在尝试从正常的cmd提示符执行我的脚本
谢谢
Osk*_*kar 41
来自微软
在VBScript中对数组进行排序从未如此简单; 那是因为VBScript没有任何类型的排序命令.反过来,这总是意味着VBScript脚本编写者被迫编写自己的排序例程,可以是冒泡排序例程,堆排序,快速排序或其他类型的排序算法.
所以(使用.Net,因为它安装在我的电脑上):
Set outputLines = CreateObject("System.Collections.ArrayList")
'add lines
outputLines.Add output
outputLines.Add output
outputLines.Sort()
For Each outputLine in outputLines
stdout.WriteLine outputLine
Next
Run Code Online (Sandbox Code Playgroud)
小智 18
我知道这是一个非常古老的话题,但它可能会在将来为任何人派上用场.下面的脚本完成了家伙试图纯粹使用vbscript实现的目标.当以大写字母开头的排序条款具有优先权时.
for a = UBound(ArrayOfTerms) - 1 To 0 Step -1
for j= 0 to a
if ArrayOfTerms(j)>ArrayOfTerms(j+1) then
temp=ArrayOfTerms(j+1)
ArrayOfTerms(j+1)=ArrayOfTerms(j)
ArrayOfTerms(j)=temp
end if
next
next
Run Code Online (Sandbox Code Playgroud)
Fio*_*ala 10
断开连接的记录集可能很有用.
Const adVarChar = 200 'the SQL datatype is varchar
'Create a disconnected recordset
Set rs = CreateObject("ADODB.RECORDSET")
rs.Fields.append "SortField", adVarChar, 25
rs.CursorType = adOpenStatic
rs.Open
rs.AddNew "SortField", "Some data"
rs.Update
rs.AddNew "SortField", "All data"
rs.Update
rs.Sort = "SortField"
rs.MoveFirst
Do Until rs.EOF
strList=strList & vbCrLf & rs.Fields("SortField")
rs.MoveNext
Loop
MsgBox strList
Run Code Online (Sandbox Code Playgroud)