小弟试着做一个搜索的东西
里面有比如“爱” "情"两个字的全文索引。爱 :  335,13;335,48;335,74;335,13;335,48;335,74;400,14;
情 :  335,14;335,63;335,37;335,63;400,15;然后我搜索:爱情 程序判断它的索引是否相邻。 显然 335,13; 335,14; 400,14;400,15;是符合的。请问如何用判断这两个字符是否有相邻的索引(335,13; 335,14;相邻要逗号前面的相同,逗号后面的是加1),有则返回逗号前面的数字。  
string hits1=@"335,13;335,48;335,74;335,13;335,48;335,74;400,14;";string hits2=@"335,14;335,63;335,37;335,63;400,15;";

解决方案 »

  1.   

    你可以先定义一个struct类型,用来标明每个字符的位置,如:
    struct charPosition
    {
        public int LineNum;
        public int ColNum;
    }然后把检索出来的字符串,先用
    string[] strItems = yourString.Split(';' );
    分解成每个struct元素,然后对于每个item,创建成struct类型变量。
    那么对于“爱”这个字,有一组struct类型变量,然后把每个变量的ColNum属性加一,在方向形成字符串,通过后形成的字符串去“情”这个字符串查找,如果找到,则进行输出,否则没有匹配。
      

  2.   

    谢谢Knight94(愚翁) ,这个应该是好的,只是我还不是很明白。
    c#不熟悉,想用字符操作。谁能给个字符串处理的。
      

  3.   

    string hits1=@"335,13;335,48;335,74;335,13;335,48;335,74;400,14;";string hits2=@"335,14;335,63;335,37;335,63;400,15;";就按你说的就可以了。
    生成数组,然后循环查找,比如根据hits1中的335,看hits2是否有335,再判断逗号后面的是否是加1的。
      

  4.   

    to c#不熟悉,想用字符操作。谁能给个字符串处理的。字符串不能直接做类似于数字的加减操作
      

  5.   

    string[] hits1s = hits1.split(';');
    string[] hits2s = hits2.split(';');for (int i=0; i<hits1s.Length; i++)
    {
       //分离
       string s = hits1s[i];
       string s1 = s.substring(0, s.IndexOf(","));
       string s2 = s.Romove(0, s1.Length + 1);
       for (int j=0; j<hits2s.Length; j++)
       {
           //这里和上面一样
           //这里直接比较即可
       }
    }
      

  6.   

    当然,在加1或减1时,可以先转化为int型
      

  7.   

    参考代码:
    string hits1=@"335,13;335,48;335,74;335,13;335,48;335,74;400,14;";
    string hits2=@"335,14;335,63;335,37;335,63;400,15;";
    string tStr = hits1;
    bool IsDone = false;
    do
    {
    int cIndex = tStr.IndexOf(";");
    string word = tStr.Substring(0, cIndex - 1);
    word += (char)((int)tStr[cIndex - 1] + 1);
    if(cIndex < tStr.Length - 1)
    {
    tStr = tStr.Substring(cIndex + 1);
    }
    else 
    {
    IsDone = true;
    }
    if(hits2.IndexOf(word) > -1)
    MessageBox.Show(word.Substring(0, word.IndexOf(","))); //这里返回","前面的数字.
    }while(IsDone == false);