求将[{"title":null,"AnswerID":"100004","Answer":"很好"},{"title":null,"AnswerID":"10001","Answer":"不知道"}] 转换成[{"title":"很好","title":"不知道"}] 
的最高效方法?  c#

解决方案 »

  1.   

    这个其实用Jquery 会比较简单点
    因为那个Jquery对JSION的处理有很好的支持
    我的想法是你可以先用JQUERY处理后再传给后台建议你有时间看一下JQUERY
      

  2.   


    当然,以下不能算是最高效的方法如果其中元素个数固定,就是两个, 那直接替换就可以了
    如果为了追求高效,而且其中元系个数不定,那较好的方法是先提取后拼接成想要的结果StringBuilder sItems = new StringBuilder(128);
    Regex reg = new Regex(@"(?<=""Answer"":"")[^""]+(?=""\})");
    MatchCollection mc = reg.Matches(yourStr);
    for (int i = 0; i < mc.Count; i++)
    {
        if (i == 0)
        {
            sItems.Append("[{\"title\":\"");
        }
        else
        {
            sItems.Append("\"title\":\"");
        }
        sItems.Append(mc[i].Value);
        if (i == mc.Count - 1)
        {
            sItems.Append("\"}]");
        }
        else
        {
            sItems.Append("\",");
        }
    }
    richTextBox2.Text = sItems.ToString();更高效的方法,因为规律固定,可以自己写有穷自动机实现02:53:01 这么“晚”还不睡
      

  3.   


    public static void Main(string[] args)
            {
                string str = "[{'title':null,'AnswerID':'100004','Answer':'很好'},{'title':null,'AnswerID':'10001','Answer':'不知道'}]".Replace("},{", "$");
                string[] strArray = str.Split('$');
                string strTemp = "";
                for (int i = 0; i < strArray.Length; i++)
                {
                    if (i == strArray.Length - 1)
                    {
                        strTemp += ",";
                    }
                    strTemp += strArray[i].Substring(0, strArray[i].IndexOf(":"));
                    strTemp += strArray[i].Substring(strArray[i].LastIndexOf(":"));                
                }
                Console.WriteLine(strTemp);
                Console.ReadKey();
            }输出:[{'title':'很好','title':'不知道'}]