str[0]="aa"
str[1]=""
str[2]="gg"
str[3]=""
怎么将这个数组变为
str[0]="aa"
str[1]="gg"

解决方案 »

  1.   

    数组改变了长度吗?如果不变的话,只要看哪个元素 == string.Empty,然后将下一个元素复制过来就好了吧,要是变长了就借用ArrayList变化一下
      

  2.   

    string[] str = new string[]{"aa", "", "gg", ""};
            
            ArrayList al = new ArrayList();
            for (int i = 0; i < str.Length; i++)
            {
                if (str[i] != string.Empty)
                    al.Add(str[i]);
            }        string[] str2 = new string[al.Count];
            for (int i = 0; i < str2.Length; i++)
            {
                str2[i] = (string)al[i];
            }
      

  3.   

    可以这样:以“|”分割合并成字符串替换“||”为“|”再分割成数组就OK了。string strNew = "";
    for(int i=0; i<str1.Length; i++)
    {
       if(i < str1.Length - 1)
          strNew += str1[i] + "|";
    }
    strNew = strNew.Replace("||", "|");
    string[] str2 = strNew.Split(new char[] {'|'});
      

  4.   

    string[] strs={"a","","","","b","c","d","",""};
    string str=string.Join("|",strs);
    while(str.IndexOf("||")>=0)
    {
    str=str.Replace("||","|");
    }
    str=str.Trim(new char[]{'|'});
    string[] strs2=str.Split('|');
      

  5.   

    这个明显适合用 
    StringCollection (优先考虑,没有ArrayList的装箱/拆箱等步骤)

    ArrayList
    for (int i = 0; i < str.Length; i++)
    {
       if (str[i] != string.Empty)
           stringCollection.Add(str[i]);
    }
    以后就直接用 stringCollection了,方便可靠,实现了IList、IEnumerator等接口.
    实在想转回字符串数组: 
    string [] str = new string(stringCollection.count)
    stringCollection.CopyTo(str,0)
      

  6.   

    string strNew = "";
    for(int i=0; i<str1.Length; i++)
    {
       if(i < str1.Length - 1)
          strNew += str1[i] + "|";
    }
    strNew = strNew.Replace("||", "|");
    string[] str2 = strNew.Split(new char[] {'|'});