你可以用正则找到 {}间的内容,然后根据逗号split为数组,如果数组只有一个元素,就按第一条处理,有多个就按第二条处理

解决方案 »

  1.   


    先用正则打到{$List_参数1,参数2,参数3}间的内容,分解参数如下:
            private void button1_Click(object sender, EventArgs e)
            {
                string msg = "{$List_参数1,参数2,参数3}";
                string p = "(?:_|,)([^,}]*)";
                MatchCollection matches = Regex.Matches(msg, p);            foreach (Match m in matches)
                {
                    string g = m.Groups[1].Value;
                    if (g == "参数1")
                    {
                        msg = msg.Replace(g, "Parameter1");
                    }
                    if (g == "参数2")
                    {
                        msg = msg.Replace(g, "Parameter2");
                    }
                    if (g == "参数3")
                    {
                        msg = msg.Replace(g, "Parameter3");
                    }
                }
                string result = msg;
            }
      

  2.   

    +1 直接取出来先按 split('_')分,然后把后面的按split(',')分不就得了 
      

  3.   

     string str = "{$Label_Tel}  {$List_参数1,参数2,参数3}";
                    string pattern_1 = @"(?i)\{\$Label_([^}]*?)\}";
                    string pattern_2 = @"(?i)\{\$List_((?<Paras>[^,]+),?)+\}";
                    str = Regex.Replace(str, pattern_1,a=>
                    {
                        //得到对应字段
                        string column = a.Groups[1].Value;//Tel
                        //根据字段查找,如果返回10010
                        string return_str = "10010";
                        return return_str;
                    });
                    str = Regex.Replace(str, pattern_2, a => 
                    {
                        var para_list = a.Groups["Paras"].Captures.Cast<Capture>().Select(b => b.Value).ToList();
                        /* [0] "参数1" string
                        [1] "参数2" string
                        [2] "参数3" string
                         */                    //根据参数查找,如果返回10010
                        string return_str = "10010";
                        return return_str;                });