日期:2014-05-17  浏览次数:20468 次

求获取下面字符串某一段效率最高的方法
有这样的一组字符串 

C# code
isrequest:true,layer:2,id:0



如我想获取layer的值,上面字符串的值为2,或者想获取isrequest的值,上面为true

请问有什么方法更简单效果更高,我自己先尝试写一个,用数组的方法。

C# code

public string GetValue(string args, string name)
        {
            string[] arr = args.Split(',');
            for (int i = 0; i < arr.Length; i++)
            {
                string[] arr2 = arr[i].Split(':');

                if (arr2[0] == name)
                    return arr2[1];
            }
            return String.Empty;
        }



------解决方案--------------------
这么点数据,不用考虑效率,能取出来就能
------解决方案--------------------
给你个正则方法:
C# code
        string s = "isrequest:true,layer:2,id:0";
        string r = Regex.Match(s, @"isrequest:([^,]+)").Groups[1].Value;
        Response.Write(r);

------解决方案--------------------
string input=@"isrequest:true,layer:2,id:0";
MatchCollection mc=Regex.Matches(input,@"(?i)(\w+):(\w+)");
Dictionary<string,string> dic=new Dictionary<string,string>();
foreach(Match m in mc)
{
dic.Add(m.Groups[1].Value,m.Groups[1].Value);
}
/*
dic中的值
isrequest true
layer 2
id 0
*/
你也可以用split以,和;分隔
------解决方案--------------------

string s = "isrequest:true,layer:2,id:0";
string[] ss = s.Split(new char[] { ',', ':' });