Studyzy.IMEWLConverter.IME.SelfDefining.BuildWordLibrary C# (CSharp) Метод

BuildWordLibrary() публичный Метод

根据Pattern设置的格式,对输入的一行该格式的字符串转换成WordLibrary
public BuildWordLibrary ( string line ) : Studyzy.IMEWLConverter.Entities.WordLibrary
line string
Результат Studyzy.IMEWLConverter.Entities.WordLibrary
        public WordLibrary BuildWordLibrary(string line)
        {
            var wl = new WordLibrary();
            wl.CodeType = UserDefiningPattern.CodeType;
            string[] strlist = line.Split(new[] {UserDefiningPattern.SplitString}, StringSplitOptions.RemoveEmptyEntries);
            var newSort = new List<int>(UserDefiningPattern.Sort);
            newSort.Sort();
            string code = "", word = "";
            int rank = 0;

            int index1 = UserDefiningPattern.Sort.FindIndex(i => i == newSort[0]); //最小的一个
            if (index1 == 0 && UserDefiningPattern.ContainCode) //第一个是编码
            {
                code = strlist[0];
            }
            if (index1 == 1) //第一个是汉字
            {
                word = strlist[0];
            }
            if (index1 == 2 && UserDefiningPattern.ContainRank) //第一个是词频
            {
                rank = Convert.ToInt32(strlist[0]);
            }
            if (strlist.Length > 1)
            {
                int index2 = UserDefiningPattern.Sort.FindIndex(i => i == newSort[1]); //中间的一个
                if (index2 == 0 && UserDefiningPattern.ContainCode) //一个是Code
                {
                    code = strlist[1];
                }
                if (index2 == 1)
                {
                    word = strlist[1];
                }
                if (index2 == 2 && UserDefiningPattern.ContainRank)
                {
                    rank = Convert.ToInt32(strlist[1]);
                }
            }
            if (strlist.Length > 2)
            {
                int index2 = UserDefiningPattern.Sort.FindIndex(i => i == newSort[2]); //最大的一个
                if (index2 == 0 && UserDefiningPattern.ContainCode) //第一个是拼音
                {
                    code = strlist[2];
                }
                if (index2 == 1)
                {
                    word = strlist[2];
                }
                if (index2 == 2 && UserDefiningPattern.ContainRank)
                {
                    rank = Convert.ToInt32(strlist[2]);
                }
            }
            wl.Word = word;
            wl.Rank = rank;
            if (code != "")
            {
                if (UserDefiningPattern.IsPinyinFormat)
                {
                    string[] codes = code.Split(new[] {UserDefiningPattern.CodeSplitString},
                        StringSplitOptions.RemoveEmptyEntries);
                    wl.SetCode(UserDefiningPattern.CodeType, new List<string>(codes),UserDefiningPattern.IsPinyinFormat);
                }
                else
                {
                    wl.SetCode(UserDefiningPattern.CodeType, code);
                }
            }

            return wl;
        }