- - PR -
[C#] listboxの項目から特定の文字列を抜き出す方法
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-02-06 19:13
前はすぐに答えていただきありがとうございました。そのとき自分の分があいまいなせいか紛らわしくさせてしまったようです。すいません、出来る限りわかりやすくします。
今回、どうしてもわからなかったので質問します。 listboxに 1,222,3333,3333,444 ・・・T 12,3456,7891011,121131415,2333 ・・・U 1234,1234567,123454676,22,865 ・・・V という項目があったとします。 この ,, の間の文字をそれぞれのTextBoxに抜き取りたいのです。 例えば上のTの項目をクリックした場合、 TextBox1には 1 TextBox2には 222 TextBox3には 3333 TextBox4には 3333 TextBox5には 444 を、 上のUの項目をクリックした場合、 TextBox1には 12 TextBox2には 3456 TextBox3には 7891011 TextBox4には 121131415 TextBox5には 2333 を、 上のVの項目をクリックした場合、 TextBox1には 1234 TextBox2には 1234567 TextBox3には 123454676 TextBox4には 22 TextBox5には 865 を、 表示させることになります。 テキストの特定文字列を抜き出す場合、Substringを使うんですが、これでは対処できないのです。 少しだけでもヒントをもらえないでしょうか? 何度も質問すいません・・ | ||||
|
投稿日時: 2006-02-06 19:26
String.Split はどうでしょうか? 区切り文字で分割して配列に変換する これならば、TextBox への表示を見る限り一発解決ですよね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-02-06 19:29
String.Split()で文字列を配列に分割してから各TextBoxにセットするてのは如何でしょうか
[追記] 被った上に二重投稿...最悪 orz _________________ FUTURE IS ON FIRE! [ メッセージ編集済み 編集者: 117 編集日時 2006-02-06 19:31 ] | ||||
|
投稿日時: 2006-02-07 22:17
>じゃんぬねっとさん 117さん
返信ありがとうございます。 サイトは大変参考になりました。これからも利用させてもらいます。 splitで,ごとに文字列を配列に分割して、TextBoxに代入することはSplitですることが出来るのですが、その逆の仕方はどうなんでしょうか? 逆だとsplitが使えないので・・ やりたいことは、例えでいうと、 TextBoxの内容が変更されたら、その変更された内容をSplitで分けられた中へ編集したいのです。 ListBox1の項目内 11,2235,6666,78888,23444,555,7789 をまず、Splitで,ごとで分けてそれぞれをTextBoxに入れます。 そして、 TextBox1: 23444 を 23344 に変更したら ListBox1の項目内の 11,2235,6666,78888,23444,555,7789 を 11,2235,6666,78888,23344,555,7789 という風に部分的に変更させたい、ということになります。 | ||||
|
投稿日時: 2006-02-07 22:23
同じサイト内にあります。 配列を結合して文字列にする _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-02-07 23:25
一度文字列配列を作ってからString.Joinするよりも、この場合なら単純に足していった方が手っ取り早いかも。 TextBoxが配列になってるのなら文字列配列作るのも楽だからJoinするだろうけど。 | ||||
|
投稿日時: 2006-02-08 00:24
「逆の仕方」に気を取られすぎたかな。
よく読んでみれば配列だとしてもループで回して Append した方が良さ気。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-02-08 22:59
>じゃんぬねっとさん Hongliangさん
サイトを完全に見ていなかったため本来は不必要の質問をしてしまいました、申し訳ありません。 自分なりに考えて、それぞれのテキストからの値をStringに入れて、それを足して全て表示させるというやり方を イベントのtextBox1_Enter、textBox1_Leave、textBox1_TextChangedとboolで分けることによって実装できました。サイト、アドバイス大変参考になりました。ありがとうございます。 あと、もう1つなのですが、テキストをリストボックスに読み込ませる場合、StreamReaderで listBox1.Items.Add(reader.ReadLine()); という風にすれば出来るのですが、 リストボックスからテキストに直して保存する場合、自分なりに考え Stream stm = savedlg.OpenFile(); StreamWriter writer = new StreamWriter(stm, System.Text.Encoding.GetEncoding("Shift_JIS")); int line_check = listBox1.Items.Count; for (int write = 0; write != line_check; write++) { listBox1.SelectedIndex = write; writer.WriteLine(listBox1.SelectedItem.ToString()); //不明! } listBox1.SelectedIndex = -1; writer.Close(); stm.Close(); とし、保存はすることが出来たのですがこれだと1000行あったりすると1行ずつ保存するためCPUにもよりますがかなりの時間がかかってしまいます。 もう少し時間短縮できるような保存の仕方はないでしょうか?何回も質問すいませんが時間があればよろしくお願いします。 (一部文がおかしかったので修正してます) [ メッセージ編集済み 編集者: Syou 編集日時 2006-02-08 23:10 ] |