假设
string strArrs =new ArrayList();
strArrs.Add(“a”);
strArrs.Add("abc");
strArrs.Add("bcd");
strArrs.Add("cde");
strArrs.Add("def");
现在要找出包含string s="bc"的项的集合
求解!

解决方案 »

  1.   


                List<string> strArrs = new List<string>(); 
                strArrs.Add("a"); 
                strArrs.Add("abc"); 
                strArrs.Add("bcd"); 
                strArrs.Add("cde"); 
                strArrs.Add("def");
                List<string> resault = strArrs.FindAll(new Predicate<string>(FindStringInArray));/// <summary>
    /// 用于Predicate泛型委托
    /// </summary>
    /// <param name="target"></param>
    /// <returns></returns>
    private static bool FindStringInArray(string target)
    {
        if (target.IndexOf("bc") >= 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    推荐你使用泛型
      

  2.   


    using System;
    using System.Collections.Generic;
    using System.Text;
    namespace Test
    {
        class Program
        {
            static void Main(string[] args)
            {
                List<string> strArrs = new List<string>();
                strArrs.Add("a");
                strArrs.Add("abc");
                strArrs.Add("bcd");
                strArrs.Add("cde");
                strArrs.Add("def");
                List<string> resault = strArrs.FindAll(new Predicate<string>(FindStringInArray));
                foreach (string s in resault)
                {
                    Console.WriteLine(s);
                }
                Console.Read();
            }        /// <summary>
            /// 用于Predicate泛型委托
            /// </summary>
            /// <param name="target"></param>
            /// <returns></returns>
            private static bool FindStringInArray(string target)
            {
                if (target.IndexOf("bc") >= 0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }
    }
    //给你个完整的,方便你看
      

  3.   


    using System;
    using System.Text.RegularExpressions;
    using System.Collections;
    public class Test
    {    public static void GetObject(string strIdent, out ArrayList Contain, out ArrayList NoContain, params string[] strArrs)
        {
            Contain = new ArrayList();
            NoContain = new ArrayList();        for (int i = 0; i < strArrs.Length; i++)
            {
                string strCurrentArr = strArrs[i];
                Match m = Regex.Match(strCurrentArr, strIdent);
                if (m.Success)
                {
                    Contain.Add(strCurrentArr);
                }
                else
                {
                    NoContain.Add(strCurrentArr);
                }
            }
        }    static void Main(string[] args)
        {
            ArrayList Contain, NoContain;
            GetObject("1", out Contain, out NoContain, "232", "4", "123", "321", "343");        //遍历包含的数据
            Console.WriteLine("包含1的数据项\n");
            foreach (string str in Contain)
            {
                Console.WriteLine(str);
            }        //反之
            Console.WriteLine("\n不包含1的数据项");
            foreach (string str in NoContain)
            {
                Console.WriteLine(str);
            }
            Console.ReadKey();
        }
    }
      

  4.   

    .. 看来要修改strArrs的类型了
    这个问题我在加hackztx私聊的时候已经帮我解决了,非常诚恳,所以想用专家分答谢他,没想到这么快这么多朋友参与,再加多100分奉上其他朋友,刚转到C#,头都大了,很想多认识几个愿意援手的朋友,QQ13569206,msnciskyATcnyudotnet
      

  5.   

    此帖发帖1天后才允许加分nnn
      

  6.   

    就3楼的就可以了,能看懂就行
    就是有个问题,我的这个是套在好几层循环中的,所以最初就是想知道有没有不用循环的,但是我没有想到list可以这么用,实话说,接触到的一个ILIST<T>也是朋友封套后给我用,没有深入接触到过
      

  7.   

    4楼的就可以.也可以看下msdn上用FindAll方法的例子:
    using System;
    using System.Collections.Generic;public class Example
    {
        public static void Main()
        {
            List<string> dinosaurs = new List<string>();        dinosaurs.Add("Compsognathus");
            dinosaurs.Add("Amargasaurus");
            dinosaurs.Add("Oviraptor");
            dinosaurs.Add("Velociraptor");
            dinosaurs.Add("Deinonychus");
            dinosaurs.Add("Dilophosaurus");
            dinosaurs.Add("Gallimimus");
            dinosaurs.Add("Triceratops");        Console.WriteLine();
            foreach(string dinosaur in dinosaurs)
            {
                Console.WriteLine(dinosaur);
            }        Console.WriteLine("\nTrueForAll(EndsWithSaurus): {0}",
                dinosaurs.TrueForAll(EndsWithSaurus));        Console.WriteLine("\nFind(EndsWithSaurus): {0}", 
                dinosaurs.Find(EndsWithSaurus));        Console.WriteLine("\nFindLast(EndsWithSaurus): {0}",
                dinosaurs.FindLast(EndsWithSaurus));        Console.WriteLine("\nFindAll(EndsWithSaurus):");
            List<string> sublist = dinosaurs.FindAll(EndsWithSaurus);        foreach(string dinosaur in sublist)
            {
                Console.WriteLine(dinosaur);
            }        Console.WriteLine(
                "\n{0} elements removed by RemoveAll(EndsWithSaurus).", 
                dinosaurs.RemoveAll(EndsWithSaurus));        Console.WriteLine("\nList now contains:");
            foreach(string dinosaur in dinosaurs)
            {
                Console.WriteLine(dinosaur);
            }        Console.WriteLine("\nExists(EndsWithSaurus): {0}", 
                dinosaurs.Exists(EndsWithSaurus));
        }    // Search predicate returns true if a string ends in "saurus".
        private static bool EndsWithSaurus(String s)
        {
            if ((s.Length > 5) && 
                (s.Substring(s.Length - 6).ToLower() == "saurus"))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }/* This code example produces the following output:Compsognathus
    Amargasaurus
    Oviraptor
    Velociraptor
    Deinonychus
    Dilophosaurus
    Gallimimus
    TriceratopsTrueForAll(EndsWithSaurus): FalseFind(EndsWithSaurus): AmargasaurusFindLast(EndsWithSaurus): DilophosaurusFindAll(EndsWithSaurus):
    Amargasaurus
    Dilophosaurus2 elements removed by RemoveAll(EndsWithSaurus).List now contains:
    Compsognathus
    Oviraptor
    Velociraptor
    Deinonychus
    Gallimimus
    TriceratopsExists(EndsWithSaurus): False
     */
      

  8.   

    有看到,所以这么说,不过测试了一下,发现改用LIST<T>比ArrayList耗时大很多,不知道是因为网络的原因还是执行效率的问题(指将原有ArrayList改用LIST<string>后没有进一步进行其他操作的情况下),我这个批处理操作,在用ArrayList时耗时844秒,现在改成LIST<string>后,已经1600了还没停下来,但是没有出错,因为我是用window.setInterval+iframe无页面缓存来查看实时效果的