我的數據是這樣的:VBScript - 如何通過數值對文本文件中的字母數字字符串進行排序?
9999.81GB increase - "c:\$RECYCLE.BIN" 1.91GB total
11.54GB increase - "c:\Program Files (x86)" 11.55GB total
101.57GB increase - "c:\Windows" 101.61GB total
我希望它看起來像這樣:
9999.81GB increase - "c:\$RECYCLE.BIN" 1.91GB total
101.57GB increase - "c:\Windows" 101.61GB total
11.54GB increase - "c:\Program Files (x86)" 11.55GB total
我一直在試圖冒泡排序此。我假設我需要首先在第一個「。」之前將字符串分開。這將是一個可用於排序的數字。我已經用類似這樣的方法來解決這個問題:
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile1 = objFSO.OpenTextFile("C:\Source.txt", ForReading)
Do Until objFile1.AtEndOfStream
FileContent = objFile1.ReadLine
arr1 = Split(FileContent,".",2)
arr2 = Array(arr1(0))
For i=0 to UBound(arr2)
WScript.Echo arr2(i)
Next
Loop
但是,我不需要回顯,而是需要在氣泡排序中使用這些值。這是我似乎被卡住的地方。
我打算使用不同類型的排序..但永遠不會有很多行來排序,所以我想泡沫可能是一個不錯的選擇。
這裏是我已經能夠做到最好:
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOpen = objFSO.OpenTextFile("C:\Source.txt", ForReading)
Do Until objOpen.AtEndOfStream
FileContent = objOpen.ReadLine
arr1 = Split(FileContent,".",2)
arr2 = Array(arr1(0))
Do
x = UBound(arr2)
y = -1
For j = LBound(arr2) to x - 1
If arr(j) > arr2(j + 1) Then
TempValue = arr2(j + 1)
arr2(j + 1) = arr2(j)
arr2(j) = TempValue
y = j
End If
Next
x = y
Loop Until y = -1
z = ""
For i = UBound(arr2) To LBound(arr2)
z = z & arr2(i) & "." & arr1(1) & vbCrlf
Next
Loop
WScript.echo z
但這只是輸出的最後一行,並沒有出現有甚至試圖進行排序。
我是新來的:)任何幫助將不勝感激。
亞瑟
單位是否總是用GB表示? – Tomalak
它們最初在KB中沒有標記爲KB。通過以前的流程,我將它們轉換爲GB並添加了「GB」以便於閱讀。 但是,您的問題的答案是,在「source.txt」中,因爲它現在存在,它始終是GB。 – ApexArthur
請注意,使用的數字可能沒有意義(增加與總數) - 我手動輸入它們用於測試目的。 – ApexArthur