我有string[] a={11,12,23,4d,ed}
string[] b={.....}
.....
string[] n={..}如何定位某个字符传(比方说4d)在哪个string[]里面试过循环的方式了,很慢,,,

解决方案 »

  1.   

    数组没有类似于集合的contain()方法  不论怎样你都是要循环的
    二楼的是一种解决办法
      

  2.   

    举个例子,从首尾向中间靠近:
    string str = ...;
    string[] arra = new string[]{...};
    for(int i = 0;i<arra.Length;i++)
    {
      if(i >= arra.Length/2+1)
        break;
      if(arra[i] == str)
        return true;
      if(arra[100-i+1] = str)
        return true;
    }
    return false;
      

  3.   

    if(arra[100-i+1] = str)
        return true;
    ->
    if(arra[arra.Length-i+1] = str)
        return true;
      

  4.   

    string str = "d4";
    string[] arra = new string[]{"a2","d5",...};
    bool bl = StrInArra(str,arra);如果问为n段,那么这样:
    public bool StrInArra(string str,string[] arra)
    {
    int iLoop = arra.Length/n+1;
    for(int i = 0;i<iLoop;i++)
    {
        if(arra[i] == str)
          return true;
        if(arra[iLoop+i] == str)
          return true;
        if(arra[iLoop*2+i] == str)
          return true;
        if(iLoop*(n-1)+i < arra.Length && arra[iLoop*(n-1)+i] == str)
          return true;
    }
    return false;
    }
    //把n换成你自己的数字,也可以根据具体需要来设定该数字。
      

  5.   

    实际写的时候,用不着那么多if语句了,可以放到一起:
    public bool StrInArra(string str,string[] arra)
    {
    int iLoop = arra.Length/n+1;
    for(int i = 0;i<iLoop;i++)
    {
        if(arra[i] == str||
           arra[iLoop+i] == str||
           arra[iLoop*2+i] == str||
           ...
           (iLoop*(n-1)+i < arra.Length && arra[iLoop*(n-1)+i] == str)
           )
          return true;
    }
    return false;
    }
      

  6.   

    string[] a={"11","12","23","4d","ed"};
    CheckValue(b, "ed");----------------------------调用------------------
    /// <summary>
    /// 
    /// </summary>
    /// <param name="str">目标string[]</param>
    /// <param name="findstr">查找的字符串</param>
    private void CheckValue(string[] str, string findstr) {
    try { ArrayList alTmp = new ArrayList();
    for(int i=0; i<str.Length; i++) {
    alTmp.Add(str[i]);
    }
    if(alTmp.Contains(findstr)) {
    MessageBox.Show("OK");
    } else {
    MessageBox.Show("Sorry");
    }
    } catch(Exception ex) {MessageBox.Show(ex.Message);}
    }