用两个字符做分隔符时,总多出一个空值来
string[] ss="11aa2222".Split("aa".ToCharArray());
结果是:
ss[0]="11";
ss[1]="";
ss[2]="222";为什么多出个ss[1]为空?我想得到的是11和2222其实只有用一个字符做分隔符时才能得到正常结果。该如何用多个字符做分隔符?

解决方案 »

  1.   

    1.  2.0里面可以加一个splitoptions2.  string[] ss="11aa2222".Split("aa".ToCharArray());//不知道你想干啥?想根据"aa"分组?不是这样写的
      

  2.   

    1.1 中要实现这样功能的办法:A.   indexof()  +  substring()B.   Regex
      

  3.   

    /// <summary>
      /// 将字符串分割成数组
      /// </summary>
      /// <param name="strSource"></param>
      /// <param name="strSplit"></param>
      /// <returns></returns>
      public string[] StringSplit(string strSource,string strSplit)
      {
       string[] strtmp = new string[1];
       int index = strSource.IndexOf(strSplit,0);
       if(index<0)
       {
        strtmp[0] = strSource;
        return strtmp;
       }
       else
       {
        strtmp[0] = strSource.Substring(0,index);
        return StringSplit(strSource.Substring(index+strSplit.Length),strSplit,strtmp);
       }
      }  /// <summary>
      /// 采用递归将字符串分割成数组
      /// </summary>
      /// <param name="strSource"></param>
      /// <param name="strSplit"></param>
      /// <param name="attachArray"></param>
      /// <returns></returns>
      private string[] StringSplit(string strSource,string strSplit,string[] attachArray)
      {
       string[] strtmp = new string[attachArray.Length+1];
       attachArray.CopyTo(strtmp,0);   int index = strSource.IndexOf(strSplit,0);
       if(index<0)
       {
        strtmp[attachArray.Length] = strSource;
        return strtmp;
       }
       else
       {
        strtmp[attachArray.Length] = strSource.Substring(0,index);
        return StringSplit(strSource.Substring(index+strSplit.Length),strSplit,strtmp);
       }   
      }用这两个函数,调用第一个
      

  4.   

    用不用那么麻烦啊?还是写个简单的代码出来吧string str = "123123aa231241234aa34920349aa934203";
    string[] grp = str.Replace("aa", "_").Split('_');
      

  5.   

    只要保证你的字符串里面没有下划线就ok正则表达式可以用,但是你的字符串不太好分组,除非比较对称,也就是说字符串最后还有一个"aa",这样就好分组了.不过这个模式比较简单,所以还是用不着正则表达式
      

  6.   

    string str = "123123aa231241234aa34920349aa934203";
    string[] grp = str.Replace("aa", "_").Split('_');
    比较简单,只是土了点,不过很实用,按具体的情况来应用。
      

  7.   

    "_"符出现机率太高了!
    我改进如下:
    string str = "123123aa231241234aa34920349aa934203";
    string[] grp = str.Replace("aa", "Ψ").Split('Ψ');这个“Ψ”符,可不是随便就能弄出来的。
      

  8.   

    Regex r=new Regex("aa");
    string[] ss=r.Split("11aa2222");
      

  9.   

    //*****写一个函数进行处理,将你拆分出来的数据放到另一个数组里面三public static void GetSplitString(string strTemp,string[] strarray)
    {
        string[] strapp=strTep.split(convert.tochar("a"));
        
        strarray=new string[strtep.leng]
        for(int i=0;i<strtep.length;i++)
        {
           if(str!="")
           {
               strarray[i]=strapp[i].tostring();         
           }
        } 
    }
      

  10.   

    using System;
    using System.Collections.Generic;
    using System.Text.RegularExpressions;public class MyClass
    {
    public static void Main()
    {
    Regex r=new Regex("aa");
         string[] ss=r.Split("123123aa231241234aa34920349aa934203");
           for(int i=0;i<ss.Length;i++)
        {
      WL(ss[i]);
    }
    RL();
    }

    #region Helper methods private static void WL(object text, params object[] args)
    {
    Console.WriteLine(text.ToString(), args);
    }

    private static void RL()
    {
    Console.ReadLine();
    }

    private static void Break() 
    {
    System.Diagnostics.Debugger.Break();
    } #endregion
      

  11.   

    Regex r=new Regex("aa");
         string[] ss=r.Split("123123aa231241234aa34920349aa934203");
    输出结果:
    123123
    231241234
    34920349
    934203
    123123
    不知道有没有注意到多出一个123123.
    哈哈,试了一下才知道。