.NET框架是否有一个函数可以计算字符串中包含的数字表达式并返回结果?铁:
string mystring = "3*(2+4)";
int result = EvaluateExpression(mystring);
Console.Writeln(result); // Outputs 18
Run Code Online (Sandbox Code Playgroud)
是否有标准框架功能,您可以用我的EvaluateExpression方法替换?
如果我有一个带有有效数学表达式的字符串,例如:
String s = "1 + 2 * 7";
Run Code Online (Sandbox Code Playgroud)
在.NET中是否有内置的库/函数来解析和评估该表达式并返回结果?在这种情况下15.
我想做相当于:
object result = Eval("1 + 3");
string now = Eval("System.DateTime.Now().ToString()") as string
Run Code Online (Sandbox Code Playgroud)
在Biri的链接之后,我得到了这个片段(修改后删除了过时的方法ICodeCompiler.CreateCompiler():
private object Eval(string sExpression)
{
CSharpCodeProvider c = new CSharpCodeProvider();
CompilerParameters cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("system.dll");
cp.CompilerOptions = "/t:library";
cp.GenerateInMemory = true;
StringBuilder sb = new StringBuilder("");
sb.Append("using System;\n");
sb.Append("namespace CSCodeEvaler{ \n");
sb.Append("public class CSCodeEvaler{ \n");
sb.Append("public object EvalCode(){\n");
sb.Append("return " + sExpression + "; \n");
sb.Append("} \n");
sb.Append("} \n");
sb.Append("}\n");
CompilerResults cr = c.CompileAssemblyFromSource(cp, sb.ToString());
if (cr.Errors.Count > 0)
{
throw …Run Code Online (Sandbox Code Playgroud) 可能重复:
.NET中是否有字符串数学计算器?
使用C#将字符串表达式转换为整数值
最佳和最短的方法来评估数学表达式c#evaluate
string"3*(4 + 2)"yield int 18
有没有办法以不同的方式计算像(2-3/4*12)这样的数学表达式?
我有一个只包含一行的文本文件,该行只包含一个数学表达式,例如12+(3.0*(4)-1)/ sqrt(121)
我的程序需要将此express表示为字符串,然后给出结果
13
是否有任何简单的方法或第三方dll/lib来实现这一目标?
评论增加:
这里是解决方案,但许多解决方案只包含+ - /*,我需要尽可能多的运营商,如天花板方形平方根和功率()
所以这个链接可能是最好的解决方案
http://www.codeproject.com/KB/recipes/sota_expression_evaluator.aspx
嗨其他程序员,
我正在创建一个计算器 C#
我有一个math包含的字符串变量100 * 5 - 2
如何显示498控制台中的输出?
我的代码是这样的:
String math = "100 * 5 - 2";
Console.WriteLine(math);
Console.ReadLine(); // For Pause
Run Code Online (Sandbox Code Playgroud)
所以基本上,我的代码将给我的是字符串本身 100 * 5 - 2
但是我希望它能够给我498一个结果.
关于这一点的想法非常感谢.
谢谢
我正在寻找将字符串转换为可执行代码的解决方案.我的代码非常慢,并执行4.7 seconds.有没有更快的方法呢?
字符串:"5*5"
产量:25
代码:
class Program {
static void Main(string[] args) {
var value = "5 * 5";
Stopwatch sw = new Stopwatch();
sw.Start();
var test = Execute(value);
sw.Stop();
Debug.WriteLine($"Execute string at: {sw.Elapsed}");
}
private static object Execute(string content) {
var codeProvider = new CSharpCodeProvider();
var compilerParameters = new CompilerParameters {
GenerateExecutable = false,
GenerateInMemory = true
};
compilerParameters.ReferencedAssemblies.Add("system.dll");
string sourceCode = CreateExecuteMethodTemplate(content);
CompilerResults compilerResults = codeProvider.CompileAssemblyFromSource(compilerParameters, sourceCode);
Assembly assembly = compilerResults.CompiledAssembly;
Type type = assembly.GetType("Lab.Cal");
MethodInfo …Run Code Online (Sandbox Code Playgroud) 是否可以转换字符串
"value > 5 && value <= 10"
Run Code Online (Sandbox Code Playgroud)
到if语句?
if (value > 5 && value <= 10)
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
我有条件存储在数据库中的字符串,所以它必须是一个动态转换
我是C#的新手,我正在尝试制作一个计算器.在Python(我更熟悉)中,你只需要import math写出你想要用数学做什么.
但是使用C#,这是我的代码:
using system;
namespace Calculator
{
class MainClass
{
public static void Main(string[] args)
{
divide(2,3);
}
public static void add(int num01, int num02)
{
Console.WriteLine("The result is " + num01+num02);
Console.ReadKey();
}
public static void multiply(int num01, int num02)
{
Console.WriteLine("The result is " + num01 * num02);
Console.ReadKey();
}
public static void divide(double num01, double num02)
{
Console.WriteLine("The result is " + num01 / num02);
Console.ReadKey();
}
public static void subtract(int num01, int num02) …Run Code Online (Sandbox Code Playgroud) c# ×10
.net ×3
math ×3
calculator ×2
c ×1
c++ ×1
c++11 ×1
eval ×1
evaluate ×1
evaluation ×1
expression ×1
numeric ×1
performance ×1
reflection ×1
string ×1