需求如下:
  一个字符串,如 Nike;Add;;Tee;;;;LiNing;Puma;;;
 得到的字符串组 {"Nike","Add","Tee","LiNing","Puma"}
 也就是需要將字符串中的分号全部去掉
  
 我自己的代码如下(感觉很没有效率):
 
   string GetReceiveStr(string str)
        {
            string strResult = string.Empty;
            if (str.Length > 0)
            {
                strResult = str;
                while (true)
                {
                    if (str.Substring(0, 1) == ";")
                    {
                        strResult = str.Substring(1);
                    }
                    else if (str.Substring(str.Length - 1, 1) == ";")
                    {
                        strResult = str.Substring(0, str.Length - 1);
                    }
                    else if (str.IndexOf(";;") > -1)
                    {
                        strResult = str.Replace(";;", ";");
                    }
                    else
                        break;
                }
            }
            return strResult;
        } 

解决方案 »

  1.   


    private void Form1_Load(object sender, EventArgs e)
    {
        String a = "Nike;Add;;Tee;;;;LiNing;Puma;;;"; 
        String[] b = a.Split(new char[]{';'}, StringSplitOptions.RemoveEmptyEntries);
        foreach (string t in b)
            MessageBox.Show(t);
    }
      

  2.   

    1楼的是通用的方法。
    效率应该是较好了。注意加StringSplitOptions.RemoveEmptyEntries
      

  3.   

    用 string.Split 方法就可以了。
      

  4.   

    string[] a=s.Split(",", StringSplitOptions.RemoveEmptyEntries);
      

  5.   

    StringBuilder初始化字符串
    循环处理1楼的也不错,不过如果字符初始化长度超过32K * n (n根据操作系统而定)
    应该还是StringBuilder实现快,初始化速度差别大
      

  6.   


    你有把握自写的函数比 strtok 函数还快?
    你有把握自写的函数比 boost 的 tokenizer 还快?兄弟你在那个科学研究所工作,还需要人手不,拉上小弟一把可以不?
      

  7.   

    String str = "Nike;Add;;Tee;;;;LiNing;Puma;;;";
                str = Regex.Replace(str, @";+", ";");
                String[] my = str.Split( ';' );
                for (int i = 0; i < my.Length; i++)
                {
                    Console.WriteLine(my[i]);
                }
      

  8.   

    string[] b = Regex.Split("Nike;Add;;Tee;;;;LiNing;Puma;;; ", ";+");
    正则版本.