private void btnConvertTest_Click(object sender, EventArgs e)
        {
            if (SelectedParsePattern == null)
            {
                MessageBox.Show("请点击右上角按钮选择匹配规则");
                return;
            }
            IWordCodeGenerater factory = null;
            if (string.IsNullOrEmpty(txbFilePath.Text))
            {
                factory = new WordPinyinGenerater();
            }
            else
            {
                factory = new SelfDefiningCodeGenerater();
                UserCodingHelper.FilePath = txbFilePath.Text;
            }
            SelectedParsePattern.Factory = factory;

            rtbTo.Clear();
            string[] fromList = rtbFrom.Text.Split(new[] {'\r', '\n'}, StringSplitOptions.RemoveEmptyEntries);
            foreach (string str in fromList)
            {
                string s = str.Trim();
                var wl = new WordLibrary {Word = s};
                string result = SelectedParsePattern.BuildWLString(wl);
                rtbTo.AppendText(result + "\r\n");
            }
        }
Пример #2
0
 private static IWordCodeGenerater SelfDefiningCodeGenerater()
 {
     var UserDefiningPattern = Global.ExportSelfDefiningPattern;
     var s = new SelfDefiningCodeGenerater();
     s.MutiWordCodeFormat = Global.ExportSelfDefiningPattern.MutiWordCodeFormat;
     s.Is1Char1Code = Global.ExportSelfDefiningPattern.IsPinyinFormat;
   
     var dict = UserCodingHelper.GetCodingDict(Global.ExportSelfDefiningPattern.MappingTablePath);
     s.MappingDictionary = dict;
     return s;
 }
 public void TestGenerateCode()
 {
     SelfDefiningCodeGenerater generater=new SelfDefiningCodeGenerater();
     generater.MappingDictionary=new Dictionary<char, string>();
     generater.MappingDictionary.Add('深', "shen");
     generater.MappingDictionary.Add('蓝', "lan");
     generater.MutiWordCodeFormat = @"code_e2=p11+p12+p21+p22
     code_e3=p11+p21+p31+p32
     code_a4=p11+p21+p31+n11";
     var result = generater.GetCodeOfString("深蓝");
     Assert.AreEqual(result[0],"shla");
 }
        public void TestGenerateMutiPinyinFormatCode()
        {
            SelfDefiningCodeGenerater generater = new SelfDefiningCodeGenerater();
            generater.MappingDictionary = new Dictionary<char, IList<string>>();
            generater.MappingDictionary.Add('深', new[] { "ipws", "ebcd" });
            generater.MappingDictionary.Add('蓝', new[] { "ajtl" });

            generater.Is1Char1Code = true;
            var result = generater.GetCodeOfString("深蓝").ToCodeString(",");
            Assert.Contains("ipws,ajtl", result.ToArray());

            //var codes = generater.GetCodeOfString("蓝深", ",");
            //Assert.AreEqual(codes[0], "ajtl,ipws");

        }
 public void TestGeneratePinyinFormatCode()
 {
     SelfDefiningCodeGenerater generater = new SelfDefiningCodeGenerater();
     generater.MappingDictionary = new Dictionary<char, string>();
     generater.MappingDictionary.Add('深', "ipws");
     generater.MappingDictionary.Add('蓝', "ajtl");
     generater.MutiWordCodeFormat = @"code_e2=p11+p12+p21+p22
     code_e3=p11+p21+p31+p32
     code_a4=p11+p21+p31+n11";
     generater.Is1Char1Code = true;
     var result = generater.GetCodeOfString("深蓝");
     Assert.AreEqual(result[0], "ipws");
     Assert.AreEqual(result[1], "ajtl");
     //var codes = generater.GetCodeOfString("蓝深", ",");
     //Assert.AreEqual(codes[0], "ajtl,ipws");
 }
        public void TestGenerateCode()
        {
            SelfDefiningCodeGenerater generater=new SelfDefiningCodeGenerater();
            generater.MappingDictionary=new Dictionary<char, IList<string>>();
            generater.MappingDictionary.Add('深',new []{ "shen"});
            generater.MappingDictionary.Add('蓝',new []{ "lan"});
            generater.Is1Char1Code = false;
            
            generater.MutiWordCodeFormat = @"code_e2=p11+p12+p21+p22
code_e3=p11+p21+p31+p32
code_a4=p11+p21+p31+n11";
            var result = generater.GetCodeOfString("深蓝").GetTop1Code();
            Assert.AreEqual(result,"shla");
            result = generater.GetCodeOfString("深深蓝").GetTop1Code();
            Assert.AreEqual(result, "ssla");
            result = generater.GetCodeOfString("深蓝深蓝").GetTop1Code();
            Assert.AreEqual(result, "slsl"); 
        }
Пример #7
0
        public string BuildWLStringSample()
        {
            var samFactory = new SelfDefiningCodeGenerater();

            samFactory.MappingDictionary = new Dictionary<char, string>()
                {
                    {'深', "shen"},
                    {'蓝', "lan"},
                    {'词', "ci"},
                    {'库', "ku"},
                    {'转', "zhuan"},
                    {'换', "huan"}
                };
            var temp = selfFactory;
            selfFactory = samFactory;
            string word = "";
            string result = "";
            List<string> codes = new List<string>();
            foreach (var c in sample.Word)
            {
                word += c;
                codes.Add(sample.PinYin[word.Length - 1]);
                var s = new WordLibrary();
                s.Count = 1234;
                s.Word = word;
                s.PinYin = codes.ToArray();
                result += BuildWLString(s) + "\r\n";
            }
            selfFactory = temp;
            return result;
        }
        private void btnConvertTest_Click(object sender, EventArgs e)
        {
            if (SelectedParsePattern == null)
            {
                MessageBox.Show("请点击右上角按钮选择匹配规则");
                return;
            }

            if (string.IsNullOrEmpty(txbFilePath.Text))
            {
                //不指定编码文件,那么必然是拼音
                //if (!SelectedParsePattern.IsPinyinFormat)
                //{
                //    MessageBox.Show("不是拼音编码,那么必须指定编码文件");
                //    return;
                //}
                MessageBox.Show("请点击右上角按钮选择编码文件!如果源词库是拼音词库,那么可以不选择编码文件,直接以每个字的拼音作为其编码");
                return;
            }
            else
            {
                SelectedParsePattern .MappingTablePath= txbFilePath.Text;
            }
            rtbTo.Clear();
            string[] fromList = rtbFrom.Text.Split(new[] {'\r', '\n'}, StringSplitOptions.RemoveEmptyEntries);
            SelfDefiningCodeGenerater generater=new SelfDefiningCodeGenerater();
            generater.MappingDictionary = UserCodingHelper.GetCodingDict(txbFilePath.Text);
            generater.MutiWordCodeFormat = SelectedParsePattern.MutiWordCodeFormat;
            foreach (string str in fromList)
            {
                string s = str.Trim();
                var code= generater.GetCodeOfString(s);
                string result = SelectedParsePattern.BuildWLString(s,code[0],1);
                rtbTo.AppendText(result + "\r\n");
            }
        }
        private void btnConvertTest_Click(object sender, EventArgs e)
        {
            if (!ReBuildUserPattern())
            {
                return;
            }
            rtbTo.Clear();
            string[] fromList = rtbFrom.Text.Split(new[] {'\r', '\n'}, StringSplitOptions.RemoveEmptyEntries);
            SelfDefiningCodeGenerater generater=new SelfDefiningCodeGenerater();

            generater.MappingDictionary = UserCodingHelper.GetCodingDict(txbFilePath.Text);
            generater.MutiWordCodeFormat = SelectedParsePattern.MutiWordCodeFormat;
            foreach (string str in fromList)
            {
                string s = str.Trim();
                var code= generater.GetCodeOfString(s);
                string result = SelectedParsePattern.BuildWlString(s,code[0],1);
                rtbTo.AppendText(result + "\r\n");
            }
        }