/// <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()); }
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); }
/// <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()); }