在 richtextbox 中查找并显示来自特定文本的多行

Find and show multiple Line from specific text in richtextbox

基于这个帖子How to get the line of specific text in richtextbox我想问另一个关于 richtextbox 中特定文本行的问题。

从那个线程,他想显示哪一行 'orange' 文本? 但是,我想知道他是否还有另一个 'orange' 比如

从 table 开始,我想显示 'Orange' 文本的行号 我预计输出将是 "Line 1,2,3,4"

非常感谢。

您必须使用循环并跟踪最后找到字符串的索引。像这样的方法应该有效:

private void button1_Click(object sender, EventArgs e)
{
    string orange = "orange";
    var index = 0;
    do
    {
        index = richTextBox1.Find(orange, index, RichTextBoxFinds.None);

        if (index >= 0)
        {
            textBox1.Text += richTextBox1.GetLineFromCharIndex(index).ToString() + " ";
            index++;
        }
    } while (index >= 0);
}

这将在不同的行中找到字符串 "orange" 的多个实例。

您可以使用像这样的小正则表达式来完成:

private void button1_Click(object sender, EventArgs e)
{
    int i = 1;
    string result = "Line ";

    foreach (Match match in Regex.Matches(richTextBox1.Text, "[A-Za-z0-9 ]+"))
    {
        if (match.Value.Contains("Orange"))
            result = $"{result} {i},";
        i++;
    }

    textBox1.Text = result;
}

如果您好奇的话,这里有一些文档: