是不是后面的字符和前面的比较,如果包含前面的就过滤掉啊?
如果是建议用string 的StartWith判断

解决方案 »

  1.   

    写个循环吧
    ---纯猜测
    ArrayList al = new ArrayList();
    for(int i = 0; i < yourArray.Length ; i++)
    {
        if(al.Count > 0 )
        {
            bool flag = false;
            foreach(string s in al)
            {
                if (s.StartsWith(yourArray[i]))
                {
                   flag  = true;
                   break;
                }
            }
            if(!flag)
               al.Add(yourArray[i]);
        }
    }
      

  2.   

    过滤条件如同搜索的*的作用,如我们搜索“a@b*”即可把a@b后面跟任意的东西的都搜索出来,
    如果已经有了a@b那么它后面跟了尾巴的都去掉。
      

  3.   

    过滤条件是:如果有a@b@c 过滤,反之保留
      

  4.   

    是不是这个意思啊:
    a@b的前面可以有东西,后面不能有,有就弃掉
    如果是这样的话,只需先将所有不含a@b的保留,在将含有它的判断是否在末尾,是就保留
      

  5.   

    如果在这个数组中已存在一个“a@b”的数据,那么就把这个数组中以“a@b”开头的所有数据删掉。这次中该可以理解了吧。
      

  6.   

    to:khpcg(欢乐英雄) 
    判断条件是:
    对每一条数据来说:
    1。没有和自己相同的。
    2、不能有其他的数据比自己短,同时和自己的前面字符相同,如:a@b@c就有a@b和它前面3位相同否则就去掉。
      

  7.   

    假设过滤条件为s:
    string [] str={"a@b","a@b@c","b@c","d@a@b","d@a@b@c"}
    string s="a@b@c"
    for(int j=0,i=0;i<str.length;i++)
    {
    if(str[i].indexof(s,0)!=-1)
    j++;
    else
    str[i-j]=str[i];

    }
      

  8.   

    2、不能有其他的数据比自己短,同时和自己的前面字符相同,如:a@b@c就有a@b和它前面3位相同应该是:2、如果有其他的数据比自己短,同时和自己的前面字符相同,如:a@b@c就有a@b和它前面3位相同就去掉
      

  9.   

    我参照brightheroes(闭关|那一剑的风情) 兄的办法终于搞定了。
    现把我的函数现出来,让大家提提意见,看还有哪里需要改进不。
    private ArrayList FilterNodes(String[] str)
    {
    ArrayList arry=new ArrayList();
    for(int i=0;i<str.Length;i++)
    {
    bool flag = false;
    if(arry.Count > 0 )
    {
    foreach(string strs in arry)
    {
    if (str[i].StartsWith(strs))
    {
    flag  = true;
    break;
    }
    }

    }
    if(!flag)
    arry.Add(str[i]); }
    return arry;
    }
      

  10.   

    ///
    ///prefix 前缀
    ///db     
    ///star   开始比较位置 (前缀位置+1) star从1开始
    void myFilter( ref string[] db,string prefix,int star) 
    {
       for(int i= star; i<db.length ; ++i)
       {
          if(db[i] !=null && db[i] !="" && db[i].indexof(s,0)==0)
          {
    db[i]="";
          }
       }
       int st=star;
       while( st<db.length-1 && (db[st]==null || db[st]==""))
       {
          st++;  
       }
       if ( st < db.length-1 )
       myFilter ( ref db,db[st],st+1 );  
    }
    ////
    void myPrint( string[] db)
    {
       for(int j=0;j<db.length; j++)
       {
         if(db[j] !=null && db[j]!="" )
         {
           //..........
         }
       }
    }