在VBS中对数字数组进行排序
Sorting an array of numbers in VBS
我想在vbs中对数组进行排序,所以数组中包含的数字是升序的。我正在从文本文件中读取数字
Sub Main()
Dim Werte(10)
Dim c
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Set c = fso.Drives
Set objFileToRead = CreateObject("Scripting.FileSystemObject").OpenTextFile("Y:\Benutzer\Desktop\Werte.txt",1)
Dim strLine
Dim i
i=0
do while not objFileToRead.AtEndOfStream
strLine = objFileToRead.ReadLine()
Werte(i)=strLine
i=i+1
loop
objFileToRead.Close
Set objFileToRead = Nothing
for x=LBound(Werte) To UBound(Werte) - 1 Step 1
for j= 0 to UBound(Werte)-1
if Werte(j)>Werte(j+1) then
temp=Werte(j+1)
Werte(j+1)=Werte(j)
Werte(j)=temp
end if
next
next
PATH="Y:\Benutzer\Desktop\Werte_sortiert.txt"
Array_ToTextFile Werte,PATH
End Sub
Function Array_ToTextFile(a,path)
Const ForWriting = 2
Dim fso
Dim writer
Dim i
Set fso = CreateObject("Scripting.FileSystemObject")
Set writer = fso.OpenTextFile(path,ForWriting,True)
For i = lbound(a) to ubound(a)
writer.writeline a(i)
Next
writer.close
End Function
Main
文本文件如下所示:
10
9
8个
7
6个
5个
4个
3个
2个
1个
0
结果如下所示:
0
1个
10
2个
3个
4个
5个
6个
7
8个
9
数字10应该排在末尾,但排序后排在第3位。非常感谢您的帮助。
问题是您进行的是字符串比较而不是数字比较。如果您将第 21 行更改为:
if Werte(j)>Werte(j+1) then
至:
if Int(Werte(j))>Int(Werte(j+1)) then
它将正确排序。
我想在vbs中对数组进行排序,所以数组中包含的数字是升序的。我正在从文本文件中读取数字
Sub Main()
Dim Werte(10)
Dim c
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Set c = fso.Drives
Set objFileToRead = CreateObject("Scripting.FileSystemObject").OpenTextFile("Y:\Benutzer\Desktop\Werte.txt",1)
Dim strLine
Dim i
i=0
do while not objFileToRead.AtEndOfStream
strLine = objFileToRead.ReadLine()
Werte(i)=strLine
i=i+1
loop
objFileToRead.Close
Set objFileToRead = Nothing
for x=LBound(Werte) To UBound(Werte) - 1 Step 1
for j= 0 to UBound(Werte)-1
if Werte(j)>Werte(j+1) then
temp=Werte(j+1)
Werte(j+1)=Werte(j)
Werte(j)=temp
end if
next
next
PATH="Y:\Benutzer\Desktop\Werte_sortiert.txt"
Array_ToTextFile Werte,PATH
End Sub
Function Array_ToTextFile(a,path)
Const ForWriting = 2
Dim fso
Dim writer
Dim i
Set fso = CreateObject("Scripting.FileSystemObject")
Set writer = fso.OpenTextFile(path,ForWriting,True)
For i = lbound(a) to ubound(a)
writer.writeline a(i)
Next
writer.close
End Function
Main
文本文件如下所示:
10 9 8个 7 6个 5个 4个 3个 2个 1个 0
结果如下所示:
0 1个 10 2个 3个 4个 5个 6个 7 8个 9
数字10应该排在末尾,但排序后排在第3位。非常感谢您的帮助。
问题是您进行的是字符串比较而不是数字比较。如果您将第 21 行更改为:
if Werte(j)>Werte(j+1) then
至:
if Int(Werte(j))>Int(Werte(j+1)) then
它将正确排序。