string s="5SX2 102-8";
s=Regex.Replace(s,"5SX2 (.{3})-8","5SJ6 $1-8 CC20");

解决方案 »

  1.   

    借用1L的代码引申一下            string s = "5SX2 102-8";
                string value = Regex.Replace(s, @"5SX2 (\w{3})-8", @"5SJ6 $1-8 CC20");
                Console.WriteLine(value);
                s = "5SJ6 204-8 CC20";
                value = Regex.Replace(s, @"5SJ6 (\w)(\w{2})-8 CC20", @"OSMC32N$1C$2");
                Console.WriteLine(value);
      

  2.   

    谢楼上两位的帮助,基本的替换我已经搞定,但现在还有一些需要判断后替换的我还是搞不定。请大家指教:1.把所有类似"5SJ6 (\d)(\d{2}-8 CC20"的字符串换成"OSMC32N$1C$2" 这条中,要求两位数字的组如果是0开头的,把0去掉。实例:5SJ6 204-8 CC20替换成OSMC32N2C4,5SJ6 416-8 CC20替换成OSMC32N4C162.把所有类似“LC1-D(\d{2})10M5C”的字符替换成“LC1-D$1M7C”。其中当这两位数字小于“09”的时候,用"09"替换;大于等于“09”的时候,直接替换。例如:“LC1-D0610M5C”替换成“LC1-D09M7C”.“LC1-D1810M5C”替换成“LC1-D18M7C”非常感谢
      

  3.   

    void Main()
    {
     var array= new string[]{"5SJ6 204-8 CC20","5SJ6 416-8 CC20"};
      var reg=new Regex(@"5SJ6 (\d)((\d)(\d))-8 CC20");
      foreach(string s in array)
      {
        Console.WriteLine("{0} -- {1}",s,reg.Replace(s,m=>
    string.Format("OSMC32N{0}C{1}",m.Groups[1].Value,
    m.Groups[3].Value=="0"?m.Groups[4].Value:m.Groups[2].Value)));
      }
      
      
      var array2= new string[]{"LC1-D0610M5C","LC1-D1810M5C"};
      var reg2=new Regex(@"LC1-D(\d{2})10M5C");
      foreach(string s in array2)
      {
    Console.WriteLine("{0} -- {1}",s,reg2.Replace(s,m=>
    string.Format("LC1-D{0}M7C",int.Parse(m.Groups[1].Value)>9?m.Groups[1].Value:"09")));
      }
      
    }
      

  4.   

    5SJ6 204-8 CC20 -- OSMC32N2C4
    5SJ6 416-8 CC20 -- OSMC32N4C16
    LC1-D0610M5C -- LC1-D09M7C
    LC1-D1810M5C -- LC1-D18M7C
      

  5.   

    优化一下第一个正则:
     var array= new string[]{"5SJ6 204-8 CC20","5SJ6 416-8 CC20"};
      var reg=new Regex(@"5SJ6 (\d)(\d{2})-8 CC20");
      foreach(string s in array)
      {
        Console.WriteLine("{0} -- {1}",s,reg.Replace(s,m=>
    string.Format("OSMC32N{0}C{1}",m.Groups[1].Value,int.Parse(m.Groups[2].Value) )));
      }