C#Multiline Textbox:如果包含X,则在行之后添加一个字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#Multiline Textbox:如果包含X,则在行之后添加一个字符串相关的知识,希望对你有一定的参考价值。

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

循环文本框没问题:

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

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

任何帮助,将不胜感激。

答案

你可以这样做:

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)”,并且在处理完所有内容之前,更改不会应用于文本框。

另一答案

流利版本:

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

以上是关于C#Multiline Textbox:如果包含X,则在行之后添加一个字符串的主要内容,如果未能解决你的问题,请参考以下文章

C#:Multiline TextBox with TextBox.WordWrap显示长Base64字符串

winform 中 textbox multiline=true的时候,让文本垂直居中,求确实可行的解决方案

VB中textbox用回车触发事件后文本框为啥会转到下一行

C#winform中怎么修改textbox的高度,解决立刻给分)

怎样在winform中控制textbox的大小

easyui TextBox 换行怎么办。data-options="multiline:true"不起作用