2013-09-01 160 views
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 
+0

**我試着使用StreamReader來做到這一點**請分享你的努力! –

+0

使用讀取器作爲新的StreamReader(o.FileName()) 儘管不reader.EndOfStream 昏暗線作爲字符串= reader.ReadLine() 昏暗X作爲字符串= line.Contains( 「8080」) 對於每個X在NsTextBox1 .Text NsTextBox1.Text = NsTextBox1.Text + X Exit While Next End While End Using – Frank

+0

請編輯您的問題並在其中粘貼代碼。它會幫助他人也理解你的問題! –

回答

0

我最近寫的東西,應該做的伎倆很好,如果代理列表每行包含1個IP不會在,是最後一個空白。
雖然不是最優化的代碼,但它工作得很好,下面是解析約6000個代理列表的一些輸出。

Output

你會使用它這樣。

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 
+0

完美,謝謝。 – Frank

+0

@ user2579399 ..您必須將此標記爲答案! ..它幫助你不是嗎?在downvote標誌下面做一個綠色的勾號.. – matzone