2014-04-02 39 views
2

我怎樣才能從RichTextBox一「串」刪除單詞。如何刪除所有比賽和刪除文本

例子:

[02/04/2014 17:04:21] Thread 1 Banned: [email protected] 
[02/04/2014 17:04:21] Thread 2: Banned: [email protected] 
[02/04/2014 17:04:21] Thread 3: Banned: [email protected] 
[02/04/2014 17:04:21] Thread 4: Banned: [email protected] 

我想與行「禁止」這個詞來刪除所有行。

我該怎麼做?

在此先感謝。

+1

使用正則表達式和捕獲。 –

回答

4

您可以使用LINQ刪除包含工作的所有行「禁止」:

richTextBox1.Lines = richTextBox1.Lines 
    .Where((line, b) => !line.Contains("Banned")) 
    .Select((line, b) => line).ToArray(); 
+1

非常感謝,非常感謝。 – Syahmie

+0

@Syahmie不客氣:) –

2

你可以嘗試使用回答這個職位 - 我會稍微調整一下代碼neaten它一點。

URL:從URL what is the best way to remove words from richtextbox?

代碼段(這將需要進行一些清理工作)。

string[] lines = richTextBox1.Lines; 
List<string> linesToAdd = new List<string>(); 
string filterString = "Banned"."; 
foreach (string s in lines) 
{ 
    string temp = s; 
    if (s.Contains(filterString)) 
     temp = s.Replace(filterString, string.Empty); 
    linesToAdd.Add(temp); 
} 
richTextBox1.Lines = linesToAdd.ToArray(); 

我會調整上述代碼,並同時仍使用循環,只是檢查是否行包含您尋找「禁止」這個詞,然後刪除行/做什麼是需要它。

我希望這可以幫助?

+0

Hello Worlds?在發佈前做好。 – kpull1

+0

@ kpull1這不是一個完整的解決方案,正如我在答案中提到的那樣...他可以使用類似的東西,但是(我說這個)「代碼需要被編輯」... – Hexie

+0

@ kpull1我已經做了在答案的調整中,無論我還是不覺得這值得一一-1 – Hexie

2

我知道這個方法看起來醜陋。但是,如果您不想從richtextbox中的現有文本中移除格式,那麼您應該使用此方法。這個例子沒有經過測試,但是,你可以從這裏得到邏輯。

for (int iLine = 0; iLine < rtf.Lines.Length; iLine++) 
{ 
    if (rtf.Lines[iLine].Contains("Banned")) 
    { 
     int iIndex = rtf.Text.IndexOf(rtf.Lines[iLine]); 
     rtf.SelectionStart = iIndex; 
     rtf.SelectionLength = rtf.Lines[iLine].Length; 
     rtf.SelectedText = string.Empty; 
     iLine--; //-- is beacause you are removing a line from the Lines array. 
    } 
} 
+1

這也是工作..但我更喜歡選擇Guilherme ..無論如何感謝。 – Syahmie

+1

是的,Guilherme的解決方案相當簡單快捷。 – Shell