如何删除所有匹配项并删除文本

本文关键字:删除 文本 何删除 | 更新日期: 2023-09-27 17:56:23

如何从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 

我想删除行中带有"禁止"一词的所有行。

我该怎么做?

提前谢谢。

如何删除所有匹配项并删除文本

可以使用 LINQ 删除包含作品"禁止"的所有行:

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

我知道这种方法看起来很丑。但是,如果您不想从富文本框中的现有文本中删除格式,则应使用此方法。此示例未经过测试,但您可以从此处获取逻辑。

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. 
    }
}

您可以尝试使用这篇文章中的答案 - 我会稍微调整代码以使其整洁一点。

网址:从富文本框中删除单词的最佳方法是什么?

来自 URL 的代码片段(需要整理)。

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(); 

我会调整上面的代码,在仍然使用循环的同时,只需检查该行是否包含您要查找的单词"禁止",然后删除该行/根据需要执行操作。

我希望这有帮助?