次のコーディングを使用して、列の値がテキストボックスの値よりも小さいことに基づいてテキストファイルを編集します。
Dim intValue As Integer
Dim intMaxValue As Integer = Integer.Parse(textbox1.Text)
Dim strSourceFile As String = IO.Path.Combine("G:\test.txt")
Dim OutPutFile As String = IO.Path.Combine("G:\test2.txt")
Dim strLines() As String = IO.File.ReadAllLines(strSourceFile)
Dim strFiltered As New System.Text.StringBuilder
Dim strTemp() As String
For Each strLine In strLines
If strLine.Trim.Length <> 0 Then
strTemp = strLine.Split(" "c)
If Trim(strTemp(0)) = "USER" AndAlso Trim(strTemp(2)) = "1" Then
strLine = strTemp(8).Trim & " " & strTemp(16).Trim
If Integer.TryParse(strLine.Split(" "c)(1), intValue) Then
If intValue <= intMaxValue Then
strFiltered.Append(strLine & Environment.NewLine)
End If
End If
End If
End If
Next
IO.File.WriteAllText(OutPutFile, strFiltered.ToString)
これで、上記のコーディングは完全に機能し、出力は次のようになります。-
String1 100
String1 256
String1 500
String2 100
String2 256
String3 876
String3 345
String3 643
String3 102
String4 100
String4 084
String5 492
String5 178
String6 873
String6 156
String6 786
私が望んでいたのは、コーディングを追加して、上記のように表示される最大の数値の文字列のみを表示することでした。
String1 500
String2 256
String3 876
String4 100
String5 492
String6 873
コーディングの最後のビットを追加することは可能でしょうか?
アップデート
最大数をチェックして他のフィールドを削除するのではなく、列1の一致する各フィールドをチェックして最大数をチェックし、それがtextbox1のフィールドより大きい場合は、列1の一致するフィールドのすべての行を削除します。最大数はtextbox1のフィールドよりも小さいため、その行は保持しますが、他の列1の一致するフィールドは削除します。だから例えば
String1 100
String1 256
String1 500
String2 100
String2 256
String3 876
String3 345
String3 643
String3 102
String4 100
String4 084
String5 492
String5 178
String6 873
String6 156
String6 786
したがって、textbox1に550がある場合は、
String1 500
String2 256
String4 100
String5 492
アップデート2
textbox1の値は
1341273599
列をフィルタリングして列1と列2のみを表示すると、次のようになります。
S00048 1428142557
S00048 1428141809
S00048 1338805621
S00048 1310295931
S00048 1309086124
S00048 1432203954
S00048 1431686625
S00048 1428142556
S00048 1431686626
S00048 1334743408
S00042 1324204635
S00040 1313659927
S00037 1308388943
S00033 1303118141
S00032 1391422317
S00032 1391422304
S00032 1298024019
S00032 1391422303
S00032 1391422316
したがって、実際のコーディングを実行すると、次のようになります。
S00048 1338805621
S00042 1324204635
S00040 1313659927
S00037 1308388943
S00033 1303118141
S00032 1298024019
最終結果が正しくないことがわかるかもしれませんか?