0

我有一个代理列表,例如 IP:PORT,我需要做的是删除所有端口号为 8080、80、431 和 13 的代理。我尝试使用 StreamReader 来执行此操作,但是没用,有大佬帮忙吗?谢谢你。

我的代码努力:

    Using reader As New StreamReader(o.FileName())
        While Not reader.EndOfStream
            Dim line As String = reader.ReadLine()
            Dim X As String = line.Contains("8080")
            For Each X In NsTextBox1.Text
                NsTextBox1.Text = NsTextBox1.Text + X
                Exit While
            Next
        End While
    End Using
4

1 回答 1

0

我最近写了一些应该可以很好地解决问题的东西,如果代理列表每行包含 1 个 IP,最后没有空格。
虽然不是最优化的代码,但它运行得很好,下面是它解析大约 6000 个代理列表的一些输出。

输出

你会这样使用它。

IO.File.WriteAllText("C:\ProxyOut.txt", ParseProxyList(IO.File.ReadAllText("C:\ProxyIn.txt"), 8080, 80, 431, 13))

编辑:哦,我刚刚读到它是用于文本框的,用法应该没有那么不同

TextBoxOut.Text = ParseProxyList(TextBoxIn.Text, 8080, 80, 431, 13))

以及函数本身:

Private Function ParseProxyList(ByVal list As String, ParamArray ports() As Integer)
    Dim splitList() As String = list.Split(vbCrLf)
    Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder()
    Dim outputLinesCount As Integer = 0
    For Each line As String In splitList
        Dim bContainsPort As Boolean = False
        For Each port As Integer In ports
            If line.EndsWith(":" & port.ToString) Then
                bContainsPort = True
            End If
        Next
        If bContainsPort = False Then
            sb.AppendLine(line)
            outputLinesCount += 1
        End If
    Next
    MsgBox(splitList.Count.ToString & "->" & outputLinesCount.ToString & " (" & (splitList.Count - outputLinesCount) & " Removed)")
    Return sb.ToString
End Function
于 2013-09-01T19:52:56.867 回答