string.Format("今天是 {0},天气晴朗",DateTime.Now);

解决方案 »

  1.   

    1.c#中有没有象js里的eval函数一样允许源代码的动态执行的函数?
    我现在有一个文本配置文件有这样一行代码:
    "今天是"+@@date+",天气晴朗"
    现在我想在c#里将这行的@@date替换成DateTime.Today,得到今天的日期,
    在js里有eval(string)这样的用法,但是c#里却不知道怎么写
    //不需要用eval,用变量替换就可以了
      

  2.   

    同意lxcc(虫子|需要点勇气和信心) ,用Today替换字符串中的内容即可
      

  3.   

    我只是举个例子:"今天是"+@@date+",天气晴朗",也可能是字符串“你好吗?"+@@name+"先生、小姐",也就是这个字符串不是固定的,变量也不是固定的,这时候该怎么写呢?
      

  4.   

    C#中就是没有一个这么好的函数,我用一个比较简单的办法实现了一半,为何是一半,看了就知道。
    我的做法是这样的,用j#编一个Eval的类,编译后在C#里引用,把C#中要执行的语句传过去,利用J#的eval来执行就可以了,不过因为是两种不相同的语言,所以在C#的特有的方法就不能用这种方法实现了,所以说只实现了一半。代码非常简单:
    class evaluate
    {
       public function jsEval(aStr: String)
       {
          return eval(aStr);
       }
    }
      

  5.   

    在codeproject里也有专门谈到用C#实现的,不过资料我弄丢了,你可以到哪里去找一下,不过现在那个网站访问非常慢
      

  6.   

    一个例子using System;
    using System.CodeDom.Compiler;
    using System.Reflection;
    using Microsoft.JScript;namespace OdeToCode.Utility
    {
       public class Evaluator
       {
          public static int EvalToInteger(string statement)
          {
             string s = EvalToString(statement);
             return int.Parse(s.ToString());
          }      public static double EvalToDouble(string statement)
          {
             string s = EvalToString(statement);
             return double.Parse(s);
          }      public static string EvalToString(string statement)
          {
             object o = EvalToObject(statement);
             return o.ToString();
          }      public static object EvalToObject(string statement)
          {
             return _evaluatorType.InvokeMember(
                         "Eval", 
                         BindingFlags.InvokeMethod, 
                         null, 
                         _evaluator, 
                         new object[] { statement } 
                      );
          }
                   
          static Evaluator()
          {
             ICodeCompiler compiler;
             compiler = new JScriptCodeProvider().CreateCompiler();         CompilerParameters parameters;
             parameters = new CompilerParameters();
             parameters.GenerateInMemory = true;
             
             CompilerResults results;
             results = compiler.CompileAssemblyFromSource(parameters, _jscriptSource);         Assembly assembly = results.CompiledAssembly;
             _evaluatorType = assembly.GetType("Evaluator.Evaluator");
             
             _evaluator = Activator.CreateInstance(_evaluatorType);
          }
          
          private static object _evaluator = null;
          private static Type _evaluatorType = null;
          private static readonly string _jscriptSource = 
             
              @"package Evaluator
                {
                   class Evaluator
                   {
                      public function Eval(expr : String) : String 
                      { 
                         return eval(expr); 
                      }
                   }
                }";
       }
    }
      

  7.   

    利用.net的即时编译功能可能会做到