怎么样比如 
String [] str1={"1","2","3"};
String [] str2={"2","3","4","5"};
合并完以后变成
取掉相同部分再合并
String [] str3={"1","2","3","4","5"};

解决方案 »

  1.   

    本帖最后由 viena 于 2008-03-04 11:22:09 编辑
      

  2.   

    public static void addArray(string[] str1,string[] str2)
    {
    ArrayList arr=new ArrayList();//因为string[]不能增加长度,所以先用ArrayList保存
    for(int i=0;i<str1.Length;i++)
    {
    foreach(string s in str2)//循环比较两个string[]中相同的数
    {
    if(str1[i]==s)//相同则将这个string加进arr
    {
    arr.Add(s);
    }
    }
    }
    string str3=(string[])arr.ToArray(typeof(string));//将arr转换为string[],好像是这样记不清楚了
    }
    //缩进不太好不好意思
      

  3.   

    StringCollection.Contains 方法执行线性搜索
    每次要遍历下,实际上还是相当于二重循环
    如果数组非常大的话,考虑效率问题,可以用StringDictionary
    用ContainsKey来判断是否存在
    只是最后不能用CopyTo复制到string数组
    需要手工写代码遍历复制~
      

  4.   

    String[] str1={"1","2","3"}; 
    String[] str2={"2","3","4","5"};
    ArrayList sc = new ArrayList();
    sc.AddRange( str1 );
    foreach ( string s in str2 )
    {
        if ( !sc.Contains( s ) )
        {
            sc.Add( s );
        }
    }
    str3 = (String[]) )sc.ToArray (typeof( string ));
      

  5.   


    String[] str1={"1","2","3"};  
    String[] str2={"2","3","4","5"}; 
    System.Collections.ArrayList sc = new System.Collections.ArrayList(); 
    sc.AddRange( str1 ); 
    foreach ( string s in str2 ) 

        if ( !sc.Contains( s ) ) 
        { 
            sc.Add( s ); 
        } 

    str3 = (String[]) )sc.ToArray (typeof( string ));
      

  6.   

    in 3.5
                string[] str1 = { "1", "2", "3" };
                string[] str2 = { "2", "3", "4", "5" };
                string[] str3 = str1.Union(str2).Distinct().ToArray();
      

  7.   

    String[] str1={"1","2","3"};  
    String[] str2={"2","3","4","5"}; 

    Dictionary<string,string> d=new Dictionary<string,string>();

    for(int i = 0;i< str1.Length;i++)
    {
    d[str1[i]]="";
    } for(int i = 0;i< str2.Length;i++)
    {
    d[str2[i]]="";
    }

    string[] result=new string[d.Keys.Count];

    d.Keys.CopyTo(result,0);

    for(int i = 0;i< result.Length;i++)
    {
    Console.WriteLine(result[i]);
    }
      

  8.   

     即使去掉Distinct()也是一样的,因为Union本身就已经去掉了重复数据