Найти и показать несколько строк из указанного c текста в richtextbox - PullRequest
0 голосов
/ 15 января 2020

Основано на этой теме Как получить строку указанного c текста в richtextbox Я хочу задать еще один вопрос о строке указанного c текста в richtextbox.

От в этой теме он хотел показать, на какой строке «оранжевый» текст? Но я хочу знать, был ли у него еще один «оранжевый», например

Exmaple image

Из этой таблицы я хочу показать номер строки «Orange» текст, я ожидал, что результатом будет "Строка 1,2,3,4"

Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 15 января 2020

Вы должны использовать al oop и отслеживать индекс, в котором вы нашли последнюю строку. Примерно так должно работать:

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" в разные строки.

0 голосов
/ 15 января 2020

Вы можете сделать это с помощью небольшого регулярного выражения, например:

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

Вот некоторая документация, если вам интересно:

...