正在从richtextbox中删除文本

本文关键字:删除 文本 richtextbox | 更新日期: 2023-09-27 18:28:13

我有richtextbox1,想要删除所有"USER1",如果句子以ALTER TABLE开头并由"USER1"组成。使用C#最好的方法是什么

我在richtextbox上的文本

DROP INDEX XIE2TBL_A;
DROP INDEX XPKTBL_A;
ALTER TABLE "COURSE" DROP CONSTRAINT "CRSE_CRSE_FK";
ALTER TABLE "ENROLLMENT" DROP CONSTRAINT "ENR_STU_FK";
ALTER TABLE "ENROLLMENT" DROP CONSTRAINT "ENR_SECT_FK";
ALTER TABLE "ENROLLMENT" ADD CONSTRAINT "ENR_STU_FK" FOREIGN KEY ("STUDENT_ID") REFERENCES "USER1"."STUDENT"("STUDENT_ID") ENABLE;
ALTER TABLE "ENROLLMENT" ADD CONSTRAINT "ENR_SECT_FK" FOREIGN KEY ("SECTION_ID") REFERENCES "USER1"."SECTION"("SECTION_ID") ENABLE;
ALTER TABLE "GRADE" DROP CONSTRAINT "GR_ENR_FK";
ALTER TABLE "GRADE" DROP CONSTRAINT "GR_GRTW_FK";
ALTER TABLE "GRADE" ADD CONSTRAINT "GR_ENR_FK" FOREIGN KEY ("STUDENT_ID","SECTION_ID") REFERENCES "USER1"."ENROLLMENT"("STUDENT_ID","SECTION_ID") ENABLE;
ALTER TABLE "GRADE" ADD CONSTRAINT "GR_GRTW_FK" FOREIGN KEY ("SECTION_ID","GRADE_TYPE_CODE") REFERENCES "USER1"."GRADE_TYPE_WEIGHT"("SECTION_ID","GRADE_TYPE_CODE") ENABLE;
ALTER TABLE "GRADE_TYPE_WEIGHT" DROP CONSTRAINT "GRTW_GRTYP_FK";
ALTER TABLE "GRADE_TYPE_WEIGHT" DROP CONSTRAINT "GRTW_SECT_FK";
ALTER TABLE "GRADE_TYPE_WEIGHT" ADD CONSTRAINT "GRTW_GRTYP_FK" FOREIGN KEY ("GRADE_TYPE_CODE") REFERENCES "USER1"."GRADE_TYPE"("GRADE_TYPE_CODE") ENABLE;
ALTER TABLE "GRADE_TYPE_WEIGHT" ADD CONSTRAINT "GRTW_SECT_FK" FOREIGN KEY ("SECTION_ID") REFERENCES "USER1"."SECTION"("SECTION_ID") ENABLE;
ALTER TABLE "INSTRUCTOR" DROP CONSTRAINT "INST_ZIP_FK";
ALTER TABLE "INSTRUCTOR" ADD CONSTRAINT "INST_ZIP_FK" FOREIGN KEY ("ZIP") REFERENCES "USER1"."ZIPCODE"("ZIP") ENABLE;
ALTER TABLE "SECTION" DROP CONSTRAINT "SECT_INST_FK";

我想要这个:

  DROP INDEX XIE2TBL_A;
DROP INDEX XPKTBL_A;
ALTER TABLE "COURSE" DROP CONSTRAINT "CRSE_CRSE_FK";
ALTER TABLE "ENROLLMENT" DROP CONSTRAINT "ENR_STU_FK";
ALTER TABLE "ENROLLMENT" DROP CONSTRAINT "ENR_SECT_FK";
ALTER TABLE "ENROLLMENT" ADD CONSTRAINT "ENR_STU_FK" FOREIGN KEY ("STUDENT_ID") REFERENCES "STUDENT"("STUDENT_ID") ENABLE;
ALTER TABLE "ENROLLMENT" ADD CONSTRAINT "ENR_SECT_FK" FOREIGN KEY ("SECTION_ID") REFERENCES "SECTION"("SECTION_ID") ENABLE;
ALTER TABLE "GRADE" DROP CONSTRAINT "GR_ENR_FK";
ALTER TABLE "GRADE" DROP CONSTRAINT "GR_GRTW_FK";
ALTER TABLE "GRADE" ADD CONSTRAINT "GR_ENR_FK" FOREIGN KEY ("STUDENT_ID","SECTION_ID") REFERENCES "ENROLLMENT"("STUDENT_ID","SECTION_ID") ENABLE;
ALTER TABLE "GRADE" ADD CONSTRAINT "GR_GRTW_FK" FOREIGN KEY ("SECTION_ID","GRADE_TYPE_CODE") REFERENCES "GRADE_TYPE_WEIGHT"("SECTION_ID","GRADE_TYPE_CODE") ENABLE;
ALTER TABLE "GRADE_TYPE_WEIGHT" DROP CONSTRAINT "GRTW_GRTYP_FK";
ALTER TABLE "GRADE_TYPE_WEIGHT" DROP CONSTRAINT "GRTW_SECT_FK";
ALTER TABLE "GRADE_TYPE_WEIGHT" ADD CONSTRAINT "GRTW_GRTYP_FK" FOREIGN KEY ("GRADE_TYPE_CODE") REFERENCES "GRADE_TYPE"("GRADE_TYPE_CODE") ENABLE;
ALTER TABLE "GRADE_TYPE_WEIGHT" ADD CONSTRAINT "GRTW_SECT_FK" FOREIGN KEY ("SECTION_ID") REFERENCES "SECTION"("SECTION_ID") ENABLE;
ALTER TABLE "INSTRUCTOR" DROP CONSTRAINT "INST_ZIP_FK";
ALTER TABLE "INSTRUCTOR" ADD CONSTRAINT "INST_ZIP_FK" FOREIGN KEY ("ZIP") REFERENCES "ZIPCODE"("ZIP") ENABLE;
ALTER TABLE "SECTION" DROP CONSTRAINT "SECT_INST_FK";

正在从richtextbox中删除文本

对于您的richTextBox1.Text,我们不需要检查每行是否以ALTER TABLE开头,只需执行以下操作:

 richTextBox1.Text = richTextBox1.Text.Replace("REFERENCES '"USER1'".", "REFERENCES ");

如果您想检查ALTER TABLE,请使用一点RegEx:

Regex reg = new Regex("(ALTER TABLE .+ REFERENCES''s+)'"USER1'"[.](.+)");
richTextBox1.Text = reg.Replace(richTextBox1.Text, "$1$2");            

您可以尝试使用此

        public string Remove(string statement, string toRemove)
    {
        int start = statement.IndexOf(toRemove);
        int end = toRemove.Length;
        statement = statement.Remove(start, end);
        return statement;
    }
    private void button1_Click(object sender, EventArgs e)
    {
        foreach (string line in richTextBox1.Text.Split(''n'))
        {
            if (line.Split(' ')[0] == "ALTER" && line.Split(' ')[1] == "TABLE" && line.Contains("USER1"))
            {
                int start = richTextBox1.Text.IndexOf(line);
                int end = line.Length - 1;
                richTextBox1.Text = richTextBox1.Text.Remove(start, end).Insert(start, Remove(line, "'"USER1'"."));
            }
        }
    }

这应该有效,我已经测试过了。