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"); } }
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"); }
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"); } }