通过操作字符串来创建函数语法

时间:2016-11-30 13:09:20

标签: c# .net linq

我正在尝试创建动态语法功能,函数语法如下:

MyFunction( arg1,arg2,ar3.....);

我有这样的字符串:

str = Previousvalue.Value1,Previousvalue.Value2

现在我想在最终变量中创建这样的语法:

String final = MyFunction(Previousvalue.Value1,',',Previousvalue.Value2);

str = Previousvalue.Value1,Previousvalue.Value2,Previousvalue.Value3;
String final = MyFunction(Previousvalue.Value1,',',Previousvalue.Value2,',',Previousvalue.Value3);

这就是我试图用string.join(不使用循环)实现的方法,但没有得到如何做到这一点,如果不使用循环,这似乎是不可能的:

final =  string.Join("MyFunction(", str.Split(','));

案例1:

Input : string str =Previousvalue.Value1,Previousvalue.Value2

输出

string final=MyFunction(Previousvalue.Value1,',',Previousvalue.Value2,',',Previousvalue.Value3);

案例2:

Input : str = Previousvalue.Value1,Previousvalue.Value2,Previousvalue.Value3;

输出

String final = MyFunction(Previousvalue.Value1,',',Previousvalue.Value2,',',Previousvalue.Value3);

案例3:

string input = " Previousvalue.Value1";

输出:

String final = Previousvalue.Value1; //No function

3 个答案:

答案 0 :(得分:1)

根据我对问题的理解,您希望使用 n 字符串参数调用MyFunction方法,还使用string[]。你可以这样做:

    public static void Main(string[] args)
    {
        string str = "Test1,Test2,Test3";

        string test1 = MyFunction("Test1", "Test2", "Test3");
        string test2 = MyFunction(str.Split(','));
    }

    public static string MyFunction(params string[] parameters)
    {
        StringBuilder sb = new StringBuilder();
        foreach(var item in parameters)
        {
            sb.AppendLine(item);
        }

        return sb.ToString();
    }

答案 1 :(得分:1)

根据我的理解,您希望生成一个字符串,如下所示:

"MyFunction(Previousvalue.Value1,',',Previousvalue.Value2);"
 ^..........^...................^....^...................^.
 prefix     arg1                sep  arg2                suffix

或换句话说

prefix = "MyFunction(";
separator = ",',',";
suffix = ");"

可以通过将prefixsuffix移出string.Join并使用上述separator值来实现:

string final = "MyFunction(" + string.Join(",',',", str.Split(',')) + ");";

而不是Split / Join,您只需使用string.Replace

string final = "MyFunction(" + str.Replace(",", ",',',") + ");";

答案 2 :(得分:0)

尝试:

UserSchema.pre('save', function(next) {
  if (this.name !== undefined) {
    if (this.name.length <= 6) {
      // throw error or whatever
    }
  }
  next();
});