/// <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;
            }
        }
Exemplo n.º 3
0
        /// <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());
        }