我现在有一个字符串,保存在cookie,想做一个用户关键字挖掘。
 
var str="|明星_8|军事_4|视频_3|";
|明星_8|的含义是 明星这个关键被用户检索了8次。
加入用户搜索的关键字是“军事”,那么我就要把字符串“|明星_8|军事_4|视频_3|”改为“|明星_8|军事_5|视频_3|”
即刷新下军事的搜索次数。 
请问如何来弄呢? 最好能排序下.比如“军事”这个关键字次数达到9次。|军事_9|明星_8|视频_3|
重新按检索次数排序。

解决方案 »

  1.   

    点击一次更新一下cookie吧 
      

  2.   

    如何更新呢?我是想读取后然后 replace来更新次数。然后重写cookie.我不想全部读出来然后再if判断。
    因为这个cookie有可能有很多关键字。上百个也有可能。 这是个辅助功能。所以需要效率很高。
      

  3.   

    很简单啊,用一个字典来保存这些数据,序列化后存到cookie中,读取的时候反序列化为字典。
      

  4.   

         string str = @"|明星_8|军事_4|视频_3|";
            private void button1_Click(object sender, EventArgs e)
            {
     
                
                str = str.TrimEnd('|').TrimStart('|');//去除左右|
                List<string[]> list_str = new List<string[]>();
                foreach (string item in str.Split('|'))
                {
                    string[] temp_str = new string[2];
                    temp_str[0] = item.Split('_')[0];
                    temp_str[1] = item.Split('_')[1];
                    list_str.Add(temp_str);
                }
                list_str = list_str.Select(a => { if (a[0].Equals("军事")) { a[1] = (int.Parse(a[1]) + 1).ToString(); return a; } else return a; }).OrderByDescending(a => a[1]).ToList();
                str = string.Join("|", list_str.Select(a => { return string.Join("_", a); }));
                //每次点击都会+1(如果是军事,可以自己传值)
                //输出 明星_8|军事_5|视频_3
            }
      

  5.   

    刚才的已经排过序了list_str = list_str.Select(a => { if (a[0].Equals("军事")) { a[1] = (int.Parse(a[1]) + 1).ToString(); return a; } else return a; }).OrderByDescending(a => a[1]).ToList();
                str = string.Join("|", list_str.Select(a => { return string.Join("_", a); }));
                //每次点击都会+1(如果是军事,可以自己传值)
                //超过次数时,排序到前面
                //输出  str "军事_9|明星_8|视频_3"
      

  6.   

                string str = "|明星_8|军事_4|视频_3|";
                string keyworld = "军事";
                string result = Regex.Replace(str, "(?<=" + keyworld + "_)[^|]+", delegate(Match m) { return (Convert.ToInt32(m.Value) + 1).ToString(); });
                Console.WriteLine(result);
    //|明星_8|军事_5|视频_3|