string s="G03 X-1.5 Y1.5 I-1.5 J0";
char f = ' ';
 string a=s.Replace('G',' ');
                   string b = a.Replace('X', ' ');
                   string c = b.Replace('Y', ' ');
                   string d = c.Replace('I', ' ');
                   string e = d.Replace('J', ' ');
                   string k = e.Replace('M', ' ');
                   string[] kk = k.Split(f);
                   for (int i = 0; i <kk.Length; i++)
                   {
                      
                       Console.Write("{0}",kk[i]);
                       
                   }
这段代码执行完后 为什么数组的长度是10啊  不理解

解决方案 »

  1.   

    string[]a=split(" ")
    string[]b=a[0].split("-")
      

  2.   

    应该拿a[1].Replace('Y',' ')吧依次类推
      

  3.   

    因为你把是空的也当一个数组无素返回来了.你可以打印出来看看.
    数组的元素应该是:
    第一个:null(也就是' ')
    03
    null
    -1.5
    null
    -1.5
    null
    0
    Y1.5
    null如果你不返回空的话,可以这样写
    K.Split(f,StringSplitOptions.RemoveEmptyEntries);
      

  4.   


    用下面这个就行.K.Split(f,StringSplitOptions.RemoveEmptyEntries);StringSplitOptions.RemoveEmptyEntries//是移除空的数组元素
      

  5.   

    K.Split(f,StringSplitOptions.RemoveEmptyEntries);
    f因该是什么类型的,我用 char   他报错呀!
      

  6.   

    string str = "G03 X-1.5 Y1.5 I-1.5 J0";
    List<string> list = new List<string>();
    Regex reg = new Regex(@"-?\d+(?:\.\d+)?");
    MatchCollection mc = reg.Matches(str);
    foreach(Match m in mc)
    {
        list.Add(m.Value);
    }
    foreach (string s in list)
    {
        richTextBox2.Text += s + "\n";
    }
      

  7.   

    K.Split(new string[]{f.toString()},StringSplitOptions.RemoveEmptyEntries); 改成上面的就不报错了.
      

  8.   

    or...string str = "G03 X-1.5 Y1.5 I-1.5 J0";
    string[] result = Regex.Replace(str, @"(?i)[a-z]+", "").Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
      

  9.   

    OK了 谢谢了  正则表达式的那个我看不懂  呵呵,
    我的txt里面很多数据 不知道正则表达式能通用吗
    G03 X-1.5 Y1.5 I-1.5 J0
    G01 X-1.5 Y0
    G01 X0 Y8.5
    G01 X1.5 Y-0
    G02 X10 Y-10 I-0 J-10
    G01 X0 Y-1.5
    G01 X-8.5 Y0
    M08
    G40
    M02把里面的值一行一行的都取去来哦!
      

  10.   

    Regex reg = new Regex(@"(?i)[a-z]+");
    using (StreamReader sr = new StreamReader(@"G:\正则学习\test.txt", Encoding.Default))
    {
        while (sr.Peek() > -1)
        {
            string[] result = reg.Replace(sr.ReadLine(), "").Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string s in result)
            {
                richTextBox2.Text += s + "\n";
            }
            richTextBox2.Text += "------------------\n";
        }
    }
      

  11.   

    12L的大哥  你能写个通用点的吗
     richTextBox2   我没有用winform啊  
    我用控制台的呀。!
      

  12.   


    richTextBox2.Text += s + "\n";
    如果是近制台的把上面改为:
    Console.WritLine(s);
    就行.
      

  13.   

    。。Regex reg = new Regex(@"(?i)[a-z]+");
    using (StreamReader sr = new StreamReader(@"G:\正则学习\test.txt", Encoding.Default))
    {
        while (sr.Peek() > -1)
        {
            string[] result = reg.Replace(sr.ReadLine(), "").Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string s in result)
            {
                Console.WriteLine(s);
            }
            Console.WriteLine("------------------");
        }
    }
    Console.ReadLine();