如何删除所有匹配项并删除文本
本文关键字:删除 文本 何删除 | 更新日期: 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();
我会调整上面的代码,在仍然使用循环的同时,只需检查该行是否包含您要查找的单词"禁止",然后删除该行/根据需要执行操作。
我希望这有帮助?