• 締切済み

リストボックスから選択した拡張子を含むものを抽出

開発環境:VB2008 VB初心者です。 ディレクトリ指定してリストボックスにディレクトリ内のファイル名を書き出すプログラムを作成しました。 その後、チェックボックスでtxtやdocなど拡張子を指定し、ボタンを押すとそのチェックした拡張子を含むファイル名だけリストボックスに書き出す処理のところで詰まっています。 やり方が悪いのかもしれません。別の簡単な方法があるのでしょうか。 どなたかサンプルでも書いていただけたらうれしいです。 よろしくお願いいたします。

みんなの回答

回答No.2

既に書かれている回答でも問題無さそうでは ありますが、(見かけ上)他の やり方もありますので、書いておきます。 System.IO.Path.GetExtension(fileName) でも同様のことが可能です。(内部的には同じ事をしているようですが…) ファイル名がString配列に入っているならば Dim fileNames() As String (ここでファイル名を配列に格納) For Each fileName As String In fileNames If System.IO.Path.GetExtension(fileName).ToLower = ".txt" Then ListBox1.Items.Add(fileName) End If Next みたいな感じで、または判定元のファイル名もListBoxに入っているなら For Each itm As Object In ListBox1.Items If System.IO.Path.GetExtension(itm.ToString).ToLower = ".txt" Then ListBox2.Items.Add(itm.ToString) End If Next みたいな書き方で可能かと思います。 For Each とか、String.ToLower とか、Object.ToString とか、 分からない部分があったら、別途ヘルプ等で調べてみてください。

nyoro514
質問者

お礼

大変わかりやすくて理解できました! ありがとうございました。

  • NYOI
  • ベストアンサー率58% (56/96)
回答No.1

例えばファイル名をfileNameというString型の変数に格納したとします。 その時、そのファイルの拡張子("."を含む)は fileName.Substring(fileName.LastIndexOf("."c)) で得られます。 例えば、拡張子が".txt"の場合のみListBoxに加える、という場合は If fileName.Substring(fileName.LastIndexOf("."c)).Equals(".txt") Then ListBox.Add(fileName) End If になります。

nyoro514
質問者

お礼

なるほど・・・ 無事コンパイルできたようです! ありがとうございました。

関連するQ&A