【问题标题】:Compare multiple words in same textbox比较同一文本框中的多个单词
【发布时间】:2014-12-11 21:10:04
【问题描述】:

我正在尝试用 c# 制作一个简单的词法分析器。

我有 2 个富文本框,第一个框将代码作为输入,第二个框将显示输出。

代码:

private void button1_Click(object sender, EventArgs e)
{
        if (richTextBox1.Text.Contains("public"))
            richTextBox2.Text = "public= id";
        if (richTextBox1.Text.Contains("main"))
            richTextBox2.Text = "main = id";
        if (richTextBox1.Text.Contains("void"))
            richTextBox2.Text = "void = id";
}

它总是只显示 1 个匹配项.. 如果我的输入是“public static void main” 它在richtextbox2 中只显示“public = id”。

为什么不显示 main 或 void ?

我是新手,任何帮助将不胜感激。谢谢:)

【问题讨论】:

  • 你的意思是它只显示“void = id”,对吧?
  • 你每次都覆盖richTextBox2.Text的内容,所以只有你的最后一条指令定义了文本
  • 使用richTextBox2.Text + =
  • = 运算符也称为assignment-operator,因此它分配一个值,而不是附加它。因此使用+= operator

标签: c# richtextbox


【解决方案1】:

您应该改用AppendText。即:

if (richTextBox1.Text.Contains("public"))
        richTextBox2.AppendText("public= id");

richTextBox2.Text = "someText" 实际上将richtextbox 的Text 设置为“someText”。因此,对于您的代码的每个满足if 条件,您的richtextobx2 文本将被覆盖

【讨论】:

  • 1+(虽然could 会比should 更好,因为+= 也有效)。不知道AppendText
【解决方案2】:

如果您的文本框中有“public static void main”,您的代码将显示“void = id”。 这是因为每次您的代码找到它要查找的字符串时,它都会替换框中值中的文本。

所以,要改变这一点,而不是使用:

richTextBox2.Text = ...

使用

richTextBox2.Text = richTextBox2.Text + ...

richTextBox2.Text += ...

这样您就可以将文本添加到文本框中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    相关资源
    最近更新 更多