如何删除RichTextBox
中“字符串”中的字词。
示例:
[02/04/2014 17:04:21] Thread 1 Banned: xxxxxxxxx@xxxx.tld
[02/04/2014 17:04:21] Thread 2: Banned: xxxxxxxxx@xxxx.tld
[02/04/2014 17:04:21] Thread 3: Banned: xxxxxxxxx@xxxx.tld
[02/04/2014 17:04:21] Thread 4: Banned: xxxxxxxxx@xxxx.tld
我想删除行中带有“禁止”字样的所有行。
我该怎么做?
提前致谢。
答案 0 :(得分:4)
您可以使用LINQ删除包含该作品的所有行" Banned":
richTextBox1.Lines = richTextBox1.Lines
.Where((line, b) => !line.Contains("Banned"))
.Select((line, b) => line).ToArray();
答案 1 :(得分:2)
你可以尝试使用这篇文章中的答案 - 我会稍微调整一下代码以便稍微改善它。
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();
我会调整上面的代码,同时仍然使用循环,只需检查该行是否包含您要查找的单词&#34; Banned&#34;然后删除行/做它需要的东西。
我希望这有帮助吗?
答案 2 :(得分: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.
}
}