两个字符 整数到字符

  • 本文关键字:字符 整数 两个 c#
  • 更新时间 :
  • 英文 :


所以我正在制作一个在表达式中计算X的程序,例如,如果我输入2*x=6,那么它会说x = 3。我的代码:

  string[] exps = textBox1.Text.Split('=');
  DataTable dt = new DataTable();
  for (int i = 0; i < 50; i++)
  {
        string s = exps[0].Replace('x', Convert.ToChar(i.ToString())); //<- problem is there
        var v = dt.Compute(s, "");
        if (int.Parse(v.ToString()) == int.Parse(exps[1]))
        {
              listBox1.Items.Add("x = " + i);
              break;
        }
  }

但是当 X 超过 9(所以它是两个字符(时我有一个问题,例如 12 或 27,它无法将其转换为字符。你能帮我如何更容易地做到这一点吗?谢谢!

对不起,我的英语不好

您不必使用 Replace(char, char) 重载。还有一个Replace(string, string)重载:

string s = exps[0].Replace("x", i.ToString());

您可能已经意识到这一点,但是您求解方程的方法仅适用于非常特定的方程。主要是有以下问题:

  • 解决方案必须是介于 0 和 49 之间的整数
  • 必须只有一个解决方案
  • 乘法必须明确标明,即 5x并不意味着 5 倍 x。
  • 右侧必须是整数。这个问题可以通过调用Compute exps[1](当然使用x替代品(轻松解决。

而不是字符,只需将其转换为字符串:

exps[0].Replace("x", i.ToString());

您可以创建包含两列的数据表

(1( 使用列名"X",这将保留值和

(2( 将具有表达式的计算列。

示例代码:

        var dt=new DataTable();
        dt.Columns.Add(new DataColumn("X", typeof(float)));
        var exprCol=new DataColumn("Expr");
        exprCol.Expression="X+10";
        dt.Columns.Add(exprCol);
        var row = dt.NewRow();
        row["X"] = 5;
        dt.Rows.Add(row);
        var calculatedValue=row["Expr"];