首页 > 解决方案 > 在文本框中查找特定单词并删除包含该单词的所有行

问题描述

我需要代码来检查单词是否存在,textBox1如果包含该单词则删除行。

词是crosshair 1

checkBox1.checked如果现在写一些文本,我创建了 cod ,textBox1我只需要该代码来serach表示单词并删除行......提前谢谢!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ConfigMaker
{
    public partial class createnew : Form
    {
        public createnew()
        {
            InitializeComponent();
            saveFileDialog1.Filter = "Configuration files | *.cfg";
            saveFileDialog1.DefaultExt = "cfg";
        }

        private void bunifuCheckbox1_OnChange(object sender, EventArgs e)
        {
            if (bunifuCheckbox1.Checked)
            {
                textBox1.Text += "crosshair 1" + "\r\n";
            }
            else
            {


            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            DialogResult result = saveFileDialog1.ShowDialog();
            if (result == DialogResult.OK)
            {
                string name = saveFileDialog1.FileName;
                File.WriteAllText(name, textBox1.Text);
            }
        }

        private void trackBar1_Scroll(object sender, EventArgs e)
        {
            var value = trackBar1.Value.ToString();
            label3.Text = value;
            textBox1.Text += "brightness " + value + "\r\n";
        }

        private void name_TextChanged(object sender, EventArgs e)
        {
            textBox1.Text += "name " + '\u0022' + name.Text + '\u0022' + "\r\n";
        }
    }
}

这是createnew表单的代码。现在我需要下一步,如果bunifucheckbox1 unchecked存在crosshair 1删除crosshair 1textbox1.text

如果trackbar1.value = 0,如果存在,则brightness "value"删除brightness "value"textbox1.text

如果textbox2.Text empty,如果存在,则从中name "value"删除。name "value"textbox1.text

我尝试使用此代码

private void bunifuCheckbox1_OnChange(object sender, EventArgs e)
        {
            string crosshair = "crosshair 0";
            string crosshair1 = "crosshair 1";
            if (bunifuCheckbox1.Checked)
            {
                textBox1.Text += crosshair.Replace(crosshair, crosshair1)  + "\r\n";
            }
            else
            {
                textBox1.Text += crosshair + "\r\n";
            }
        }

但它仍然用替换的文本创建新行......

标签: c#

解决方案


您实际上并没有给我们太多帮助,例如多行、单行 TextBox。

您希望在输入时、输入后、按下按钮时在什么时候测试文本?

你有没有试过String.Contains(…)

我建议您查看此处的 Microsoft 文档并选择一个您理解的示例,如果您仍然遇到问题,请联系我们。

编辑

如果您在尽可能少的行中更改 TextBox 中的文本,那么您可以使用String.Replace.

Text属性TextBox是一个字符串,String.Replace如果它可以执行您要求的替换,它只会给您一个更改的字符串。

所以你的代码应该是这样的:

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {

        if (checkBox1.Checked)
        {
            textBox1.Text = textBox1.Text.Replace("crosshair 0", "crosshair 1");
        }
        else
        {
            textBox1.Text = textBox1.Text.Replace("crosshair 1", "crosshair 0");
        }
    }

推荐阅读