将文本框文本转换为包含代码的字符串

时间:2016-10-18 11:41:47

标签: c# string textbox

所以我创建了一个名为Something(string text)的函数,需要string。 现在我有一个onclick执行Something(textBox1.Text)的按钮。

我希望textBox.Text能够像"test " + (5+2).toString()

现在该函数将获得""test " + (5+2).toString()"(例如)作为输入,它将把它视为一个大字符串。

我想要它做的是获取test 7而不是像一个大字符串那样对待它。

我将如何做到这一点?

提前致谢! -Tim

编辑:

这将是我的职责:

private void Something(string text)
{
    MessageBox.Show(text);
}

如果我那么做

Something(textBox1.Text);

当textBox1看起来像

__________________
| "hi " + "test" |
------------------

它会生成一个说"hi" + "test"而不是hi test的MessageBox。

2 个答案:

答案 0 :(得分:1)

您需要在文本框中编译字符串并运行代码,然后再将其提供给Something - 方法。

查看Roslyn,轻松评估文本框中的表达式。

然后你会得到:

string result = await CSharpScript.EvaluateAsync<string>("\"test \" + (5+2).toString()");
Something(result);

答案 1 :(得分:1)

我认为你必须以这种方式尝试。 res包含算术运算的答案。

 doSomething(string text)
    {            
        DataTable dt = new DataTable();
        string[] operators = { "+", "*", "/", "-" };
        string[] data = text.Split(' ');
        for(int i=0; i< data.Length; i++)
        {
            if((operators.Any(data[i].Contains)))
            {
                MessageBox.Show(data[i].ToString());
                var res = dt.Compute(data[i],"");
            }
        }

    }