Beispiel #1
0
        private static string GetMutiPinyin()
        {
            string path = ConstantString.PinyinLibPath;
            var    sb   = new StringBuilder();

            if (File.Exists(path))
            {
                string txt = FileOperationHelper.ReadFile(path);

                var      reg   = new Regex(@"^('[a-z]+)+\s[\u4E00-\u9FA5]+$");
                string[] lines = txt.Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
                for (int i = 0; i < lines.Length; i++)
                {
                    if (reg.IsMatch(lines[i]))
                    {
                        sb.Append(lines[i] + "\r\n");
                    }
                }
            }
            sb.Append(Dictionaries.WordPinyin);
            return(sb.ToString());
        }
        //private static string filePath = "";

        //private static IDictionary<char, string> dictionary = new Dictionary<char, string>();

        //public static string FilePath
        //{
        //    get { return filePath; }
        //    set
        //    {
        //        filePath = value;
        //        dictionary = GetCodingDict(FileOperationHelper.ReadFile(filePath));
        //    }
        //}
        //public static IDictionary<char,string> MappingDictionary
        //{
        //    get { return dictionary; }
        //    set { dictionary = value; }
        //}

        //public static string GetCharCoding(char c, string codingFilePath = null)
        //{
        //    if (codingFilePath != null && codingFilePath != filePath)
        //    {
        //        dictionary = GetCodingDict(FileOperationHelper.ReadFile(codingFilePath));
        //        filePath = codingFilePath;
        //    }
        //    if (dictionary.ContainsKey(c))
        //    {
        //        return dictionary[c];
        //    }
        //    else
        //    {
        //        throw new ArgumentOutOfRangeException("从编码文件中找不到字[" + c + "]对应的编码");
        //    }
        //}

        public static IDictionary <char, IList <string> > GetCodingDict(string filePath, Encoding encoding)
        {
            string codingContent = FileOperationHelper.ReadFile(filePath, encoding);
            var    dic           = new Dictionary <char, IList <string> >();

            foreach (string line in codingContent.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries))
            {
                string[] l    = line.Split('\t');
                char     c    = l[0][0];
                string   code = l[1];
                if (!dic.ContainsKey(c))
                {
                    dic.Add(c, new List <string> {
                        code
                    });
                }
                else
                {
                    dic[c].Add(code);
                }
            }
            return(dic);
        }