Многострочное текстовое поле C #: добавление строки после строки, если она содержит X - PullRequest
0 голосов
/ 24 апреля 2019

То, что я пытаюсь сделать, это зациклить содержимое многострочного текстового поля (циклично зацикливаясь), если оно содержит определенное ключевое слово (например, если строка содержит слово: click()), затем на следующей строкея бы добавил слово sleep(5)

Зацикливание текстового поля не проблема:

foreach (string line in txtBoxAdd.Lines)
{
   if (line.Contains("click()"))
   {
      Helpers.ReturnMessage(line);
   }
}

Часть, с которой у меня возникла проблема, состоит в том, как добавить слово sleep(5) в следующуюстрока после того, как он нашел ключевое слово click(), например.

Любая помощь будет оценена.

Ответы [ 2 ]

3 голосов
/ 25 апреля 2019

Вы можете сделать что-то вроде этого:

List<string> lines = new List<string>(textBox1.Lines);

for(int i = 0; i < lines.Count; i++) 
{
   if (lines[i].Contains("click()")) 
   {
      lines.Insert(i + 1, "sleep(5)");
      i++;
   }                
}

textBox1.Lines = lines.ToArray();

Обратите внимание, что он не проверяет, есть ли уже «sleep (5)» в следующей строке, и что изменения не отображаются.t применяется к текстовому полю, пока все не будет обработано.

1 голос
/ 25 апреля 2019

Свободная версия:

using System;
using System.Linq;
using System.Windows.Forms;

namespace WindowsFormsApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            txtBoxAdd.Lines = new[] { "Line 1", "Line 2", "Line 3 contains the buzzword", "Line 4", "Line 5 has the buzzword too", "Line 6" };
        }

        private void button1_Click(object sender, EventArgs e)
        {
            InsertLineAfterBuzzword(buzzword: "buzzword", lineToAdd: "line to add");
        }

        private void InsertLineAfterBuzzword(string buzzword, string lineToAdd)
        {
            txtBoxAdd.Lines = txtBoxAdd.Lines
                                       .SelectMany(i => i.Contains(buzzword) ? new[] { i, lineToAdd } : new[] { i })
                                       .ToArray();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...