有个字符串如下面所示
time="2011-12-06 18:47:02" id="1" name="" card_src="from_check"  type="face" 
如何最方便取到里面的time,id,name等值。
求教!

解决方案 »

  1.   

    先用"和空格切割得到每个项目,然后再用="切割每一项
    string s = "time=\"2011-12-06 18:47:02\" id=\"1\" name=\"\" card_src=\"from_check\" type=\"face\"";
    s = s.Trim() + " ";
    string[] items = s.Split(new string[] { "\" " }, StringSplitOptions.RemoveEmptyEntries);
    foreach (var item in items)
    {
        string[] kv = item.Split(new string[] { "=\"" }, StringSplitOptions.RemoveEmptyEntries);
        System.Diagnostics.Debug.WriteLine(string.Format("key:{0},value:{1}", kv[0],kv.Length==2?kv[1]:string.Empty));
    }
      

  2.   


     string  tempStr=@"time=""2011-12-06 18:47:02"" id=""1"" name="""" card_src=""from_check"" type=""face""";
                string pattern = @"(?i)time=""([^""]*)"".*?id=""([^""]*)"".*?name=""([^""]*)""";
                Match mc = Regex.Match(tempStr,pattern);
                string text = string.Format("time:{0} id:{1} name:{2}", mc.Groups[1].Value, mc.Groups[2].Value, mc.Groups[3].Value);
                //time:2011-12-06 18:47:02 id:1 name:
      

  3.   


    void Main()
    {
    string  tempStr=@"time=""2011-12-06 18:47:02"" id=""1"" name="""" card_src=""from_check"" type=""face""";
    string pattern = @"(?is)time=(['""]?)(?<time>[^""']*?)\1.*?id=(['""]?)(?<id>[^'""]*?)\2.*?name=(['""]?)(?<name>[^'""]*?)\3";
    foreach(Match mc in Regex.Matches(tempStr,pattern))
    Console.WriteLine(string.Format("time:{0} id:{1} name:{2}", mc.Groups["time"].Value, mc.Groups["id"].Value, mc.Groups["name"].Value));
    //time:2011-12-06 18:47:02 id:1 name:}