複数の拡張子を置換してファイル名を表示する方法

このQ&Aのポイント
  • VB2010と7 Pro SP1でファイルセレクタを使用して複数の拡張子を置換してファイル名を表示する方法を教えてください。
  • ファイルセレクタで指定したフィルタを使用してファイルを選択し、選んだファイルの名前を表示する際に、拡張子を外して表示したい場合、どのように置換すればよいでしょうか?
  • 複数の拡張子がある場合、Replace関数を使用して拡張子をなくしてファイル名を表示させる方法について教えてください。
回答を見る
  • ベストアンサー

置換

VB2010 7 Pro SP1 ファイルセレクタで、下記のフィルタをしていて、選んだファイルの名前を表示して、拡張子は外しています。 ofd1.Filter = "AA|*.aaa" file1 = Replace(ofd1.FileName, ".aaa", "") TextBox1.Text = file1 1つでは上記で出来たのですが、複数あると置換できません。 ofd1.Filter = "AA|*.aaa|BB|*.bbb|CC|*.ccc" file1 = Replace(ofd1.FileName, ".aaa", "") file1 = Replace(ofd1.FileName, ".bbb", "") file1 = Replace(ofd1.FileName, ".ccc", "") TextBox1.Text = file1 とすると最後のcccしか置換してくれず、.bbbのファイルを選んでも置換されません。 どの拡張子が来ても拡張子をなくして表示させたいのですが、Replaceで出来るでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

こんにちは。 こうしてみてください↓ file1 = Replace(ofd1.FileName, ".aaa", "") file1 = Replace(file1, ".bbb", "") file1 = Replace(file1, ".ccc", "")

yurielna
質問者

お礼

ファイルセレクタで選んだファイル名で2つ目以降やっていたからですね。 2つ目以降は置換したファイルを指定することで、どのファイルを指定しても すべて拡張子が表示されなくなりました。 ありがとうございます。

その他の回答 (2)

回答No.2

Replaceでもアレコレ書けば,できなくはないでしょうけど, Replaceをそのまま使ったのでは, 「拡張子以外のファイル名部分に .aaa等が含まれていた場合」に 拡張子以外の部分も一緒に消してしまいますよね. 他の方策を検討した方がいいのではないでしょうか. Pathクラスとか,使ってみたりして.

yurielna
質問者

補足

ドットはファイル名にはないので「.aaa」は拡張子にしか該当しません。 見えにくいので全角で入力しました。

回答No.1

>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", "") ただ、同一のテキストボックスにファイル名を継ぎ足してもみづらいかと思いますので、テキストボックスを複数用意するか、コンボボックスに設定するほうがよいと思いますが・・・

yurielna
質問者

お礼

3つ目の置換で、該当しないから元の拡張子を含んだ名前が入るという事ですね。 任意のファイル1つ選ぶだけですので複数用意しても 1つのファイル名が置換の数だけ同じファイル名が並ぶだけですよね。

yurielna
質問者

補足

ファイル名に「.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つ目の置換が実行さるなら 元の名前のまま表示されるのは何故でしょうか?

関連するQ&A

  • VBAの正規表現

    VBAで正規表現による置換をしたいです。 以下のような行が複数あります。 1 aaa bbb ccc ddd 2 aaa bbb ccc ddd 3 aaa bbb ccce ddd 4 aaa bbb eccc ddd ccc の部分のみ置換したいです。 dim hensuu as string dim replace as string replace = eee hensuu = ccc (省略) strPattern = "(\s*)" & hensuu & "(\s+)" rep = RegExpObj.Replace(buf, "\1" & replace & "\2") 行数1,2 のみを置換したのですが、4も置換されてしまいます。 (\s*) の "*" が良くないのは理解していますが、"+" にしてもうまくいきません。 どなたかどのようにしたら1,2のみ置換できるようになるかをご教授お願いできませんでしょうか よろしくお願いいたします。

  • 文章中のファイルリンクを置換したい

    文章をjavascriptで読み込み、 以下のような文章のなかに埋まっているファイルリンクの文字を 置換してあげたいのですが、正規表現で表現しきれないでしょうか? ■例: ---以下文章---- あああああ いいいいい \\AAA\BBB\CCC ううううううう \\CCC\DDD\EEE えええええ --------------- とあった時に、下記のようにしたいと考えています。 --------------- あああああ いいいいい <a href="file:////AAA/BBB/CCC">\\AAA\BBB\CCC</a> ううううううう <a href="file:////DDD/EEE/FFF">\\DDD\EEE\FFF</a> えええええ --------------- 今考えている限りだとは\\までを含む文章まではマッチさせて、 リプレースできるのですが、 文章の中の\を/に置き換える方法が思いつきません。 ■私の頭の限界の正規表現だけだと下記までしか思いつきませんでした。 str.replace ( /(\\\\[^ \s\:\*\?\"\<\>\|\#\{\}\%\&\~]+)/gi , <a href=\"file:\/\/$&\">$&<\/a>)> どなたか思いつくことありましたらお知恵をかしていただけないでしょうか。

  • WORDの置換で単語の後ろに空白文字を入れたい

    ワード2007です。 横書きで、各行に単語が1つか複数並んでいます。 下記のような場合に、単語の最後に空白文字を入れる(置換する)にはどうすればよいですか? 置換で、「単語の最後」「行の最後」を指定する方法がわかりません 1.AAA   AAA□   BBB ⇒BBB□   CCC   CCC□ 2.AAA AAA    AAA AAA□   BBB BBB ⇒ BBB BBB□   CCC CCC    CCC CCC□  よろしくお願いします。

  • ○○個目と●●個目の××を置換したいのですが...

    例えば, aaa\n bbb\n ccc\n ddd\n eee\n ... となっているテキストファイル(\nは改行)の,3n個目(n=1,2,3,...)の\n(つまり3,6,9,...個目の\n)を\tに置換したいのですが,そのようなツールはありますでしょうか? (あるいはそのような正規表現を教えていただければと思います.perlでやろうとしたのですが,不慣れなためできませんでしたので...) よろしくお願い致します.

  • 外部パラメータを使用したファイルの作成・書き込み

    テキストファイルに以下の内容が書かれています。 ファイルパス:/aaa/bbb/ccc ファイル名:ファイル.txt これを読み込んで $filepath = /aaa/bbb/ccc $filename = ファイル.txt となっています。 この時(「ファイル.txt」は存在しません。)、以下のような処理を行うと「/aaa/bbb/ccc」ではなく、「/aaa/bbb」に「ファイル.txt」が作成されるのですが、なぜでしょうか?? open(TXT, ">> $filepath/$filename"); flock(TXT, 2); print TXT $header; flock(TXT, 8); close(TXT); この処理の前に$filepathの値を調べましたが、確かに「/aaa/bbb/ccc」となっています。 何か注意する点や、ここが問題では?と言うようなことがあれば教えてください。

    • ベストアンサー
    • Perl
  • メモ帳の置換機能で特定の文字列は残して置換するには?

    メモ帳の置換機能を使っているのですが、置換対象文字が含まれている特定の文字や文字列を選んで置換されないようにするにはどうしたらいいいでしょうか? 例えば <aaa/>bbbbb<ccc/><ddd/>で<ccc/>を除いて「/」を「#」に置換したい場合⇒<aaa#>bbbbb<ccc/><ddd#> などです。 メモ帳に<ccc/>を除いて置換するといった機能はないですよね? 他のテキストエディタで上記の機能を持つフリーソフトがあれば教えていただけますか? よろしくおねがいします。

  • 置換コマンド

    freeBSD5.3を使用している初心者です。 あるディレクトリ以下の全ファイルに対し、一度に内容の文字を置換したいのですがうまくいきません。 例えば /hoge/aaa.txt /hoge/bbb.txt /hoge/ccc.txt と、/hoge以下に3ファイルがあり、このファイルにAAAという文字列があるなら、AAAをBBBにしたいと思っています。 sed s/AAA/BBB/g /hoge/* とすると、置換後の中身が表示はされますが、それに置きかわったファイルは/hoge/以下に保存されていません。(もとのAAAのまま) できたら、/hoge 以下の置換されたファイルを/hoge2以下に同じ名前で保存させたいと思っています。 どなたか是非アドバイスお願いいたします。

  • 配列を対象にして正規表現の置換、うまくいきません

    正規表現の置換ができませんのでお教え下さい。 @list= ('aaa', 'bbb', 'ccc'); $sentence = 'rrr bbb dddd eee aaa rrrr bbbb aaa'; foreach (@list) { $sentence =~ s/$_/あああ/g; } print $sentence; どうしてもエラーになります。 そこで \をつけて、$sentence =~ s/\$_/あああ/g; などとやってみても置換されません。 どこが間違えているのでしょうか。よろしくお願いします。

    • ベストアンサー
    • Perl
  • emacsのreplace-regexpで改行を指定する方法

    例えば aaa, bbb, ccc, ddd, eee のような文字列の ","を改行に置換して aaa bbb ccc ... のようにする操作で(query-)replace-regexp<ESC %>を使って行いたいのですが、RETURNを指定するにはどのようにしたら良いのでしょうか? ESC % とうちこみ、 Query replace , with: <RETURN> と単純に入力しただけではうまく行きません。。。 以上宜しくお願い致します。

  • スペースの追加

    セミコロン(;)の後ろにスペースを追加する方法を教えてください。 $text = 'aaa;bbb;ccc;' を $text = 'aaa; bbb; ccc; ' な感じにしたいです。 preg_replace等で、出来るのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう