BTFTL_5322_18.C9.11.27.10.49.dat   转换成 532218C911271049
 B_F_MR_5322_18.C9.11.07.03.40.dat        532218C911070340

解决方案 »

  1.   

    能不能把规则说出来?
    你举这两个例子,我们会认为是从5322_开始截取
    string str="BTFTL_5322_18.C9.11.27.10.49.dat";
    int i=str.IndexOf("5322_");
    string strNew=str.Substring(i).replace("_","").replace(".","").TrimEnd(".dat");
      

  2.   

    本帖最后由 bdmh 于 2013-03-18 10:22:53 编辑
      

  3.   

    有规则怎么都好弄,如果你只想处理这两个字符串那就更简单了,直接使用substring函数就行了啊
      

  4.   


    string str = "BTFTL_5322_18.C9.11.27.10.49.dat";
    string newStr = Regex.Replace(Regex.Match(str, @"\d.*\d").ToString(), @"_|\.","");
    Console.WriteLine(newStr);
      

  5.   


     string s = GetString("BTFTL_5322_18.C9.11.27.10.49.dat");  public string GetString(string str)
            {
                return str.Trim().Remove(0, str.IndexOf("5322_")).TrimEnd(new char[] { '.', 'd', 'a', 't' }).Replace("_", "").Replace(".", "");
            }s="532218C911271049";
      

  6.   

    自己写了个笨方法,拿出来丢一下人。。还是楼上大神的比较简单哈string str = "BTFTL_5322_18.C9.11.27.10.49.dat";
                int i = str.IndexOf("5322_");
                string strNew = str.Replace(".dat","").Substring(i).Replace("_", "").Replace(".", "");
                Regex data = new Regex("^[0-9]$");
                string strNew1 = str.Replace(".dat", "").Replace("_", "").Replace(".", "");
                char[] c=strNew1.ToCharArray();
                int num = 0;
                for (i = 0; i < c.Length; i++)
                { 
                    string s = c[i].ToString();
                    if (data.IsMatch(s) == false)
                    {
                        num++;
                    }
                    else
                    {
                        break;    
                    }
                }
                strNew1=strNew1.Substring(num);
                Console.WriteLine(strNew);
                Console.WriteLine(strNew1);
      

  7.   


     string s = " BTFTL_5322_18.C9.11.27.10.49.dat";
                //替换掉_
                s = s.Replace("_","");
                //替换掉.
                s = s.Replace(".","");
                //转换为charArray
                var charArray = s.ToArray();
                //查找第一个数字出现的位置
                int i;
                for (i=0; i < charArray.Count(); i++)
                {
                    var value =charArray[i] ;
                    if (value>=48&&value<=57)
                        break;
                }
                //去掉尾
                s = s.Substring(i, s.Length - i -3);做表单无思路,求
      

  8.   

      string str = "B_F_MR_5322_18.C9.11.07.03.40.dat";
                str = Regex.Replace(str, @"(?is)[a-z]+_|\.(dat)?|(?<=\d)_", "");
      

  9.   


    可支持多个字符串一起操作。var src = @"BTFTL_5322_18.C9.11.27.10.49.dat B_F_MR_5322_18.C9.11.07.03.40.dat";
    var rgx = @"_(?<g1>\d{4})_(?:(?<g2>\w{2})\.)+";
    var answer = from match in Regex.Matches(src, rgx).Cast<Match>()
                 let groups = match.Groups.Cast<Group>().Skip(1)
                 let captures = groups.Select(g => String.Join("", g.Captures.Cast<Capture>().Select(c => c.Value)))
                 select String.Join("", captures);foreach (var a in answer)
    {
        Console.WriteLine(a);
    }