- ベストアンサー
複数の拡張子を置換してファイル名を表示する方法
- VB2010と7 Pro SP1でファイルセレクタを使用して複数の拡張子を置換してファイル名を表示する方法を教えてください。
- ファイルセレクタで指定したフィルタを使用してファイルを選択し、選んだファイルの名前を表示する際に、拡張子を外して表示したい場合、どのように置換すればよいでしょうか?
- 複数の拡張子がある場合、Replace関数を使用して拡張子をなくしてファイル名を表示させる方法について教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 こうしてみてください↓ file1 = Replace(ofd1.FileName, ".aaa", "") file1 = Replace(file1, ".bbb", "") file1 = Replace(file1, ".ccc", "")
その他の回答 (2)
- toro-nekomata
- ベストアンサー率45% (24/53)
Replaceでもアレコレ書けば,できなくはないでしょうけど, Replaceをそのまま使ったのでは, 「拡張子以外のファイル名部分に .aaa等が含まれていた場合」に 拡張子以外の部分も一緒に消してしまいますよね. 他の方策を検討した方がいいのではないでしょうか. Pathクラスとか,使ってみたりして.
補足
ドットはファイル名にはないので「.aaa」は拡張子にしか該当しません。 見えにくいので全角で入力しました。
- piyo_dansyaku
- ベストアンサー率75% (12/16)
>file1 = Replace(ofd1.FileName, ".aaa", "") >file1 = Replace(ofd1.FileName, ".bbb", "") >file1 = Replace(ofd1.FileName, ".ccc", "") >TextBox1.Text = file1 ファイル名.aaaやファイル名.bbbが置換されないわけではありません。 同じ変数に対し、何度も値を入れれば変数の値が上書きされるのは当然です。 (一番最後のcccで上書かれているだけ。) TextBox1.Textに全て格納したいのであれば、 file1 = Replace(ofd1.FileName, ".aaa", "") & Replace(ofd1.FileName, ".bbb", "") & Replace(ofd1.FileName, ".ccc", "") ただ、同一のテキストボックスにファイル名を継ぎ足してもみづらいかと思いますので、テキストボックスを複数用意するか、コンボボックスに設定するほうがよいと思いますが・・・
お礼
3つ目の置換で、該当しないから元の拡張子を含んだ名前が入るという事ですね。 任意のファイル1つ選ぶだけですので複数用意しても 1つのファイル名が置換の数だけ同じファイル名が並ぶだけですよね。
補足
ファイル名に「.aaa」がない場合は最初の置換は行われず次の置換をするのではないのですか? C:\test\dmy.bbbだった場合、1つ目には合致せず次の".bbb"を""に置換して 3つ目に合致せず、結果は「C:\test\dmy」 にならないのでしょうか? それぞれの拡張子のファイルを選んだ場合の結果は下記のように3つ目しか置換されません。 C:\test\dmy.aaa C:\test\dmy.bbb C:\test\dmy 上書きされるとのことですが、最初の2個のファイルは3つ目の置換が実行さるなら 元の名前のまま表示されるのは何故でしょうか?
お礼
ファイルセレクタで選んだファイル名で2つ目以降やっていたからですね。 2つ目以降は置換したファイルを指定することで、どのファイルを指定しても すべて拡張子が表示されなくなりました。 ありがとうございます。