/// <summary> /// 左ののリストボックスを選択した時の動作. /// まんなかのリストにその母音と一致する名前を並べる /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void listBoxReadV_SelectedIndexChanged(object sender, EventArgs e) { String sel = (String)listBoxReadV.SelectedItem; var li = from r in yakyuuNameDic.NameTable where sel == ConvertTextForYakyuu.convVowelString(r.NameRead) select r; listBoxRead.Items.Clear(); listBoxRead.Items.AddRange(li.ToArray()); textBoxAnnotation.Text = ""; }
private void button1_Click(object sender, EventArgs e) { var str = textBoxLyrics.Text; var list = yakyuuNameDic.selectNameFromReadV(ConvertTextForYakyuu.convVowelString(str)); foreach (YakyuuName y in list) { textBoxConverted.Text += "\r\n" + y.Name; } }
/// <summary> /// 「名前, 名前読み, [注釈]」のフォーマットをした /// 外部CSVファイルから辞書を作成する /// </summary> /// <param name="filepath">DSVファイルのパス</param> private void readDicFile(String filepath) { TextFieldParser parser = new TextFieldParser(filepath); parser.TextFieldType = FieldType.Delimited; parser.SetDelimiters(","); NameTable = new List <YakyuuName>(); while (!parser.EndOfData) { // 名前, 名前読み, 注釈 string[] csvRow = parser.ReadFields(); YakyuuName dataRow = new YakyuuName(); dataRow.Name = csvRow[0]; dataRow.NameRead = csvRow[1]; if (csvRow.Length >= 3) { dataRow.Annotation = csvRow[2]; } else { dataRow.Annotation = ""; } dataRow.Used = 0; NameTable.Add(dataRow); //Debug.WriteLine( "data Set:" + dataRow.Name + " " + dataRow.NameRead + " "+ dataRow.Annotation); } Debug.WriteLine("NameData : " + NameTable.Count + " lines"); ReadTable = new List <YakyuuRead>(); var nameUnuqRead = from YakyuuName n in NameTable group n by n.NameRead; foreach (var gr in nameUnuqRead) { String read = gr.Key; String readV = ConvertTextForYakyuu.convVowelString(read); YakyuuRead r = new YakyuuRead(read, readV); //Debug.WriteLine("Data set : " + r.NameRead + ":"+ r.NameReadV); ReadTable.Add(r); } Debug.WriteLine("ReadData : " + ReadTable.Count + " lines"); }
/// <summary> /// 変換ボタンを押した時の動作. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ananlysLyric(object sender, EventArgs e) { // 選手名辞書が空だったらその場で動作を止める if (yakyuuNameDic == null) { textBoxConverted.Text = "no loaded dics!!"; return; } resetSelList(); // 変換後テキストの初期化 textBoxConverted.Text = ""; // 入力されたテキストを母音列に変換 string readv = ConvertTextForYakyuu.convVowelString(textBoxLyrics.Text); // 母音列をトークン列に変換 var ls = new LatticedString(readv, yakyuuNameDic); // 元の文字列を表示 textBoxConverted.Text += "[" + ls.BaseString + "]\r\n"; // グラフを展開したものを順次表示 foreach (var s in ls.unfoldLatticeToString()) { textBoxConverted.Text += s + "\r\n"; } // 全てのトークンを取得 var selList = new HashSet <String>(ls.allTokens()); // 一回リストをクリアしてからそれらを下のリストボックスに追加 listBoxReadV.Items.Clear(); var li = selList.ToList(); li.Sort(); listBoxReadV.Items.AddRange(li.ToArray()); }