数据源如下:锄地|http://www.网址.com/webqq_27/
施肥|http://www.网址.com/webqq_26/    《《 前面相同后面网址不同
施肥|http://www.网址.com/webqq_25/     《《 前面相同后面网址不同
杀虫|http://www.网址.com/webqq_24/======================问题如下:要根据“|”(分隔符)前面中文的数据进行比对重复提取,但是后面的也必须带着一起,如果分散将无法后续工作将产生混乱。只根据“|”(分隔符)很好排除重复,网上方法比较多。但是加入“|”(分隔符)后面一组后难度加大。=========================程序理想结果如下:
锄地|http://www.网址.com/webqq_27/
施肥|http://www.网址.com/webqq_26/    《《《  因  “|”(分隔符) 前的数据相同,排除掉一个。
杀虫|http://www.网址.com/webqq_24/

解决方案 »

  1.   

    先找到字符串中的“|”(分隔符)。
    用subString().
    然后对截取结果进行比对。
    用equal().
      

  2.   

    感觉不难
    我的思路是你先把他读入StringBuilder里,在按分隔符取出来放在HashTable里,若用了,就不添加了,最后在把他存在一个地方(锄地)就设置为key
      

  3.   


    恩。我也刚刚翻了书,感觉hashtable可以解决问题。现在着手做做,看。
      

  4.   

     string [] arr=new string [100];
                //你自己初始化
                Hashtable tb = new Hashtable();
                foreach (string str in arr )
                {
                    string str1=str .Substring (0,2);
                    string str2=str .Substring (2,最后);
                    if (!tb.Contains(str))
                    {
                        tb.Add(str1, str2);
                    }
                }
                //现在你就这个表遍历出来就可以了。。
      

  5.   

    写错了
      string [] arr=new string [100];            Hashtable tb = new Hashtable();
                foreach (string str in arr )
                {
                    string str1=str .Substring (0,2);
                    string str2=str .Substring (2,最后);
                    if (!tb.Contains(str1))
                    {
                        tb.Add(str1, str2);
                    }
                }
                //现在你就这个表遍历出来就可以了。。
               
      

  6.   

    哈哈。也刚刚做出来。以前用hashtable用的少。刚刚搜索一下,知道hashtable直接对keys的值重复项报错Try catch里面加个判断就可以过滤。不过还是谢谢你啊。分给你聊。。
      

  7.   

    一个另类方法,效率可能不高,验证下是否可用吧            string test = @"锄地|http://www.网址.com/webqq_27/ 
    施肥|http://www.网址.com/webqq_26/ 
    施肥|http://www.网址.com/webqq_25/ 
    杀虫|http://www.网址.com/webqq_24/ 
    锄地|http://www.网址.com/webqq_23/
    锄地|http://www.网址.com/webqq_22/
    ";
                Regex reg = new Regex(@"(?s)(([^\|\n]+)\|(?:(?!\2).)*)\2[^\n]+(\n|$)");
                while (test != (test = reg.Replace(test, "$1"))){}
                richTextBox2.Text = test;
      

  8.   

    不会呀,我加了判断语句呀,如果key重复的话,根本就不会加进去
      

  9.   


    要的就是他加不进去,try catch 报错后自己进行处理。直接忽略进入ht.add下一步