Textboxに表示される拡張子を消すには

解決


トリッス  2003-11-08 04:18:09  No: 109838

画像をImageに呼び出し,テキストボックスにそのファイル名を表示する
ようにしています。
その表示の「.jpg」「.bmp」といった,拡張子の部分を出さないように
したいと思います。
len,right,leftなど調べたのですが,後ろ4文字を出さないという方法が
わからずにいます。
ご指導お願いいたします。


魔界の仮面弁士  2003-11-08 04:44:03  No: 109839

いや、4文字とは限りませんよ。「.jpeg」なんて拡張子もありますし。

> 後ろ4文字を出さないという方法が
"."の位置を調べ、そこまでの文字列を切り出すようにしてみてください。

この時、"."の位置は文字列の「後ろ」から調べます。(VB6ならば、InStrRev関数を使う事ができます)
前から検索した場合、「Gazou.gif.jpg」のように、ベースファイル名にピリオドが含まれる時にも、「Gazou.gif」ではなく「Gazou」になってしまいますので。

…あるいは、FileSystemObjectオブジェクトのGetBaseNameメソッドを使うという手もありますね。


トリッス  2003-11-08 21:26:03  No: 109840

魔界の仮面弁士様,ありがとうございます。
教えていただいたことを手がかりに,VB6で以下のようにして
できるようになりました。

Dim x As Integer
    x = InStrRev(CommonDialog1.FileName, ".", -1)
   Text1.Text = Left(CommonDialog1.FileName, x - 1)

これで画像ファイル名以降を出さないようにできたのですが
さらに欲が出て,画像ファイル名の前(C:\○○\)を消したいと
思い,次のようにしてみました。

Dim i As Integer
    i = InStrRev(CommonDialog1.FileName, "\", -1)
   Text1.Text = Right(CommonDialog1.FileName, Len_(CommonDialog1.FileName) - i)

この2つを組み合わせ,画像ファイル名のみを表示させる場合には,
どのようにしたらよいのでしょうか。
よろしくお願いいたします。


魔界の仮面弁士  2003-11-08 23:28:39  No: 109841

難しく考えなくても、単に、それら(LeftとRightの)
両方の処理を行えば良いだけですよね。

'ファイル名を受け取る
S = CommonDialog1.FileName
'拡張子部分を捨てる処理
X = InStrRev(S, ".")
If X > 0 Then
  S = Left(S, X - 1)
End If
'フォルダ部分を捨てる処理
X = InStrRev(S, "\")
If X > 0 Then
  S = Right(S, Len(S) - X)  '『S = Mid(S, X + 1)』の方が簡単ですけれどね。
End If
Text1.Text = S

もしくはMidを使って、切り出す処理を1回だけにする事もできるでしょう。

あるいは、先に書いたGetBaseNameメソッドですかね。(これが一番簡単かな?)
Text1.Text = CreateObject("Scripting.FileSystemObject").GetBaseName(CommonDialog1.FileName)


Say  2003-11-10 09:11:42  No: 109842

パス文字列を"\"でSplitした後"."でSplitする、という手もあります。

"C:Text1.txt"みたいなパスにも対応したかったら、
最初に":"でSplitする必要がありますが・・・。


トリッス  2003-11-10 19:11:22  No: 109843

魔界の仮面弁士様,Say様,ありがとうございました。
無事にできるようになりました。また,コードの書き方についても,
大変勉強になりました。

初心者の私に丁寧な対応をして下さり,感謝申し上げます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加