使用数学运算符评估字符串

发布于 2024-11-04 01:54:48 字数 101 浏览 6 评论 0原文

有没有一种简单的方法来评估字符串,例如 “(4+8)*2” 这样你就得到了 24 的 int 值?

或者需要做很多工作才能完成这件事......?

Is there an easy way to evaluate strings like
"(4+8)*2"
So that you'd get the int value of 24?

Or is there a lot of work needed to get this done...?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

柳若烟 2024-11-11 01:54:48

别人加了这个,然后就被删除了。我认为这很酷,因为不需要第三方库。

class Program
    {

        static void Main(string[] args)
        {
            Console.WriteLine(Evaluate("(4+8)*2"));
            Console.ReadKey();
        }

        public static double Evaluate(string expression)
        {
            DataTable table = new DataTable();
            table.Columns.Add("expression", typeof(string), expression);
            DataRow row = table.NewRow();
            table.Rows.Add(row);
            return double.Parse((string)row["expression"]);
        }

    } 

Someone else added this and then it got deleted. I thought it was pretty cool because no 3rd party libraries required.

class Program
    {

        static void Main(string[] args)
        {
            Console.WriteLine(Evaluate("(4+8)*2"));
            Console.ReadKey();
        }

        public static double Evaluate(string expression)
        {
            DataTable table = new DataTable();
            table.Columns.Add("expression", typeof(string), expression);
            DataRow row = table.NewRow();
            table.Rows.Add(row);
            return double.Parse((string)row["expression"]);
        }

    } 
旧街凉风 2024-11-11 01:54:48

使用 Ncalc:

Expression e = new Expression("(4+8)*2");
Debug.Assert(24 == e.Evaluate());   

http://ncalc.codeplex.com/

另外,这个问题之前已经被问过,并且有一些有趣的答案包括 Ncalc : Evaluating string "3*(4+2)" yield int 18

Use Ncalc:

Expression e = new Expression("(4+8)*2");
Debug.Assert(24 == e.Evaluate());   

http://ncalc.codeplex.com/

Also, this question had been previously asked and has some interesting answers including Ncalc : Evaluating string "3*(4+2)" yield int 18

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文