当前位置: 首页>>代码示例>>C#>>正文


C# ItemCollection.ContainsKey方法代码示例

本文整理汇总了C#中ItemCollection.ContainsKey方法的典型用法代码示例。如果您正苦于以下问题:C# ItemCollection.ContainsKey方法的具体用法?C# ItemCollection.ContainsKey怎么用?C# ItemCollection.ContainsKey使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ItemCollection的用法示例。


在下文中一共展示了ItemCollection.ContainsKey方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Parser

        public Parser(byte[] source)
        {
            if (source == null || source.Length <= 0) {
                return;
            }
            this.source = source;

            items = new ItemCollection();
            // преобразуем данные в текст
            string sourceString = GetSourceAsString();

            // при запросе
            // первая строка содержит метод запроса, путь и версию HTTP протокола
            string httpInfo = sourceString.Substring(0, sourceString.IndexOf("\r\n"));
            var myReg = new Regex(@"(?<method>.+)\s+(?<path>.+)\s+HTTP/(?<version>[\d\.]+)", RegexOptions.Multiline);
            if (myReg.IsMatch(httpInfo)) {
                Match m = myReg.Match(httpInfo);
                if (m.Groups["method"].Value.ToUpper() == "POST") {
                    method = MethodsList.POST;
                } else if (m.Groups["method"].Value.ToUpper() == "CONNECT") {
                    method = MethodsList.CONNECT;
                } else {
                    method = MethodsList.GET;
                }
                // или можно определить метод вот так
                // _Method = (MethodsList)Enum.Parse(typeof(MethodsList), m.Groups["method"].Value.ToUpper());
                // но надежней всеже использовать условие

                path = m.Groups["path"].Value;
                httpVersion = m.Groups["version"].Value;
            } else {
                // при ответе
                // первая строка содержит код состояния
                myReg = new Regex(@"HTTP/(?<version>[\d\.]+)\s+(?<status>\d+)\s*(?<msg>.*)", RegexOptions.Multiline);
                Match m = myReg.Match(httpInfo);
                int.TryParse(m.Groups["status"].Value, out statusCode);
                statusMessage = m.Groups["msg"].Value;
                httpVersion = m.Groups["version"].Value;
            }

            // выделяем заголовки (до первых двух переводов строк)
            headersTail = sourceString.IndexOf("\r\n\r\n");
            if (headersTail != -1) {
                // хвост найден, отделяем заголовки
                sourceString = sourceString.Substring(sourceString.IndexOf("\r\n") + 2, headersTail - sourceString.IndexOf("\r\n") - 2);
            }

            // парсим заголовки и заносим их в коллекцию
            myReg = new Regex(@"^(?<key>[^\x3A]+)\:\s{1}(?<value>.+)$", RegexOptions.Multiline);
            MatchCollection mc = myReg.Matches(sourceString);
            foreach (Match mm in mc) {
                string key = mm.Groups["key"].Value;
                if (!items.ContainsKey(key)) {
                    // если указанного заголовка нет в коллекции, добавляем его
                    items.AddItem(key, mm.Groups["value"].Value.Trim("\r\n ".ToCharArray()));
                }
            }
        }
开发者ID:Mexahoid,项目名称:CSF,代码行数:58,代码来源:HttpParser.cs


注:本文中的ItemCollection.ContainsKey方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。