Example #1
0
        /// <summary>
        /// 解析成员为键值对数组
        /// </summary>
        /// <param name="content"></param>
        /// <returns></returns>
        private static Pair[] ParseMembers(ref string content)
        {
            List <Pair> membersList = new List <Pair>();

            string original = content.ToString();

            //判断Object类型
            Pair[] pairsOfObject = ParsePairs(ref content, regexPairOfObject);
            foreach (Pair pair in pairsOfObject)
            {
                pair.index = original.IndexOf(pair.content);
                pair.value = ParseObject(ref pair.content);
            }
            membersList.AddRange(pairsOfObject);

            //判断Array类型
            Pair[] pairsOfArray = ParsePairs(ref content, regexPairOfArray);
            foreach (Pair pair in pairsOfArray)
            {
                pair.index = original.IndexOf(pair.content);
                pair.value = ParseArray(ref pair.content);
            }
            membersList.AddRange(pairsOfArray);

            //判断String类型
            Pair[] pairsOfString = ParsePairs(ref content, regexPairOfString);
            foreach (Pair pair in pairsOfString)
            {
                pair.index = original.IndexOf(pair.content);
                pair.value = pair.content;
            }
            membersList.AddRange(pairsOfString);

            //判断Number类型
            Pair[] pairsOfNumber = ParsePairs(ref content, regexPairOfNumber);
            foreach (Pair pair in pairsOfNumber)
            {
                pair.index = original.IndexOf(pair.content);
                pair.value = ConfigTools.ConvertNumber(pair.content);
            }
            membersList.AddRange(pairsOfNumber);

            //判断Bool类型
            Pair[] pairsOfBool = ParsePairs(ref content, regexPairOfBool);
            foreach (Pair pair in pairsOfBool)
            {
                pair.index = original.IndexOf(pair.content);
                pair.value = ConfigTools.ConvertBool(pair.content);
            }
            membersList.AddRange(pairsOfBool);

            //排序
            membersList.Sort(Pair.Compare);

            return(membersList.ToArray());
        }
Example #2
0
        private static object ParseBaseValue(string contentOfValue)
        {
            Match result;

            result = Regex.Match(contentOfValue, regexString);
            if (result.Success)
            {
                return(result.Groups[1].Value);
            }

            result = Regex.Match(contentOfValue, regexNumber);
            if (result.Success)
            {
                return(ConfigTools.ConvertNumber(result.Groups[1].Value));
            }

            result = Regex.Match(contentOfValue, regexBool);
            if (result.Success)
            {
                return(ConfigTools.ConvertBool(result.Groups[1].Value));
            }

            return(null);
        }
Example #3
0
        /// <summary>
        /// 解析数组
        /// </summary>
        /// <param name="content"></param>
        /// <returns></returns>
        private static object[] ParseArray(ref string content)
        {
            List <object> array = new List <object>();

            //排序
            string      original = content.ToString();
            List <Sort> sorts    = new List <Sort>();

            //Object
            MatchCollection matchObjects = MatchesAndRemove(ref content, regexObject);

            foreach (Match match in matchObjects)
            {
                string s = match.Groups[1].Value;
                sorts.Add(new Sort(original.IndexOf(s), ParseObject(ref s)));
            }

            //数组
            MatchCollection matchArraies = MatchesAndRemove(ref content, regexArray);

            foreach (Match match in matchArraies)
            {
                string s = match.Groups[1].Value;
                sorts.Add(new Sort(original.IndexOf(s), ParseArray(ref s)));
            }

            //String
            MatchCollection matchStrings = MatchesAndRemove(ref content, regexString);

            foreach (Match match in matchStrings)
            {
                string s = match.Groups[1].Value;
                sorts.Add(new Sort(original.IndexOf(s), s));
            }

            //Number
            MatchCollection matchNumbers = MatchesAndRemove(ref content, regexNumber);

            foreach (Match match in matchNumbers)
            {
                string s = match.Groups[1].Value;
                sorts.Add(new Sort(original.IndexOf(s), ConfigTools.ConvertNumber(s)));
            }

            //Bool
            MatchCollection matchBools = MatchesAndRemove(ref content, regexBool);

            foreach (Match match in matchBools)
            {
                string s = match.Groups[1].Value;
                sorts.Add(new Sort(original.IndexOf(s), ConfigTools.ConvertBool(s)));
            }

            //进行排序
            sorts.Sort(Sort.Compare);
            foreach (Sort s in sorts)
            {
                array.Add(s.data);
            }

            return(array.ToArray());
        }