string[] s = File.ReadAllLines("test.txt");
            string reg = @"(CR\d\d) Mark DCode=29 \t(S\d\d) (.+)";
            List<string> s1 = new List<string>();
            List<string> s2 = new List<string>();
            for (int i = 0; i < s.Length; i++)
            {
                Match m = Regex.Match(s[i], reg);
                if (s1.Where(x => x == m.Groups[2].ToString()).Count() == 0)
                {
                    s1.Add(m.Groups[2].ToString());
                }
                if (s2.Where(x => x == (m.Groups[1].ToString()+m.Groups[3].ToString())).Count() == 0)
                {
                    s2.Add(m.Groups[1].ToString()+m.Groups[3].ToString());
                }
            }
            Console.WriteLine(string.Join(",",s1.ToArray()));
            Console.WriteLine(string.Join(",", s2.ToArray()));
            Console.ReadKey();
test.txt记录的是你的数据,请叫我雷锋

解决方案 »

  1.   

    题目就不看了。假设ls是正确的,那么他的代码用linq,可以简化下:string[] s = File.ReadAllLines("test.txt");
    string reg = @"(CR\d\d) Mark DCode=29 \t(S\d\d) (.+)";
    var s1 = s.Select(x => Regex.Match(x, reg)).Where(x => s1.All(y => y != x.Groups[2].ToString())).Select(x => m.Groups[2].ToString()).ToArray();
    var s2 = s.Select(x => Regex.Match(x, reg)).Where(x => s1.All(y => y != x.Groups[3].ToString())).Select(x => m.Groups[3].ToString()).ToArray();
    Console.WriteLine(string.Join(",",s1));
    Console.WriteLine(string.Join(",", s2));
      

  2.   

       上面那位哥  CR20Wrong    这个能加个空格吗? 不会正则
      

  3.   


    第二串 字符 怎么加 空格  "CR20 Missing"  这样
      

  4.   


    补充  这样的捉不到 额  CR20 Mark DCode=29  S30 Wrong Component Orientation
    CR20 Mark DCode=29  S30 Wrong Component Orientation
    CR21 Mark DCode=29  S29 Wrong Component Orientation
    CR22 Mark DCode=29  S28 Missing component
    CR22 Mark DCode=29  S28 Missing component
    CR23 Mark DCode=29  S27 Wrong Component Orientation
    CR24 Mark DCode=29  S25 Missing component
    L1 Mark DCode=2 S02 Missing component
    JJ Mark DCode=29 S30 Wrong Component Orientation
      

  5.   


    补充  这样的捉不到 额  CR20 Mark DCode=29  S30 Wrong Component Orientation
    CR20 Mark DCode=29  S30 Wrong Component Orientation
    CR21 Mark DCode=29  S29 Wrong Component Orientation
    CR22 Mark DCode=29  S28 Missing component
    CR22 Mark DCode=29  S28 Missing component
    CR23 Mark DCode=29  S27 Wrong Component Orientation
    CR24 Mark DCode=29  S25 Missing component
    L1 Mark DCode=2 S02 Missing component
    JJ Mark DCode=29 S30 Wrong Component Orientation
    好吧,看来你真的啥也不会啊
    你这样也好改,只要把正则表达式修改一下   string reg = @"([A-Z]{1,2}\d{1,2} )Mark DCode=\d{1,2} \t(S\d\d) (.+)";       
      

  6.   

    之前没怎么看,我去,你为啥有的数据中间有制表符有的没有啊,现在改一下 string reg = @"([A-Z]{0,2}\d{0,2} )Mark DCode=\d{1,2}[\s\S+](S\d\d) (.+)";
    这个就没问题的
      

  7.   

    可以用string[] string1=string2.split(' ');
    将空格作为分隔符,将字符串分解为字符数组
    然后自己重新拼接