首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C#多行文本框:在包含X的行后添加字符串

C#多行文本框:在包含X的行后添加字符串
EN

Stack Overflow用户
提问于 2019-04-25 04:51:20
回答 2查看 173关注 0票数 0

我尝试做的是循环多行文本框的内容(逐行循环),如果它包含某个关键字(例如,如果行中包含单词:click()),那么在下一行中添加单词sleep(5)

循环textbox是没有问题的:

代码语言:javascript
复制
foreach (string line in txtBoxAdd.Lines)
{
   if (line.Contains("click()"))
   {
      Helpers.ReturnMessage(line);
   }
}

例如,我遇到的问题是,在找到关键字click()之后,如何在下一行添加单词sleep(5)

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-25 05:14:35

你可以这样做:

代码语言:javascript
复制
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)“,并且在整个处理完成之前,更改不会应用于文本框。

票数 3
EN

Stack Overflow用户

发布于 2019-04-25 05:45:57

流利版本:

代码语言:javascript
复制
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();
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55838367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档