• ベストアンサー

"picture.jpg" の "picture" を取りだすには

お世話になります。 "picture.jpg" のような文字列から 拡張子を省いた値を 取りだすにはどうすれば良いのでしょうか? Java でいう str.lastIndexOf(".") や substr() のような関数はあるのでしょうか? msdn 関数 http://msdn.microsoft.com/ja-jp/library/32s6akha.aspx

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。   picture.jpg の picture の部分をベース名と呼びます。これと開発環境をキーワード に WEB 検索すると参考記事が見つかりますよ。 .NET 環境なら、GetFileNameWithoutExtension メソッドです。   System.IO.Path.GetFileNameWithoutExtension("picture.jpg") VB/VBA 環境なら FileSystemObject の GetBaseName を利用するとか。   Dim fso As Object   Set fso = CreateObject("Scripting.FileSystemObject")   MsgBox fso.GetBaseName("picture.jpg") 余談ですが、ベース名と拡張子の切り分けは次の点にご注意を。 1. 拡張子は 3 文字とは限らない   例)Sample.jpeg、index.html   --> Left などで3文字前まで、、と単純に切り分けると失敗する     場合があります。最近では、Office2007 の拡張子が 4 文字に     なりましたね。また、拡張子が無いファイルもあります。 2. ファイル名に複数のピリオドが有り得る   例)2008.6.29.xls   --> 拡張子のピリオド位置をファイル名の前から探すと失敗する     場合がある。 InStrRev などでファイル名の後ろからピリオドを探すとか、拡張子の ピリオドが無い場合の処理を追加すれば良いだけですが。 ご参考までに。

hirosi1999
質問者

お礼

丁寧な解説とても勉強になりました ありがとうございました。

その他の回答 (4)

回答No.5

環境が書かれてませんが、VB.NET系(私が調べたのは2005(Framework2.0)ですが) での話を前提として書きます。 >Java でいう str.lastIndexOf(".") や substr() >のような関数はあるのでしょうか? Javaは分からないですが、ありますよ。普通にヘルプに載ってます。 substr は SubString ですが。 下の内容をご覧になると分かると思いますが、両方ともStringクラスのメソッドです。 http://msdn.microsoft.com/ja-jp/library/system.string_members(VS.80).aspx なお、こういう聞き方をされているのでお分かりかとは思いますが、 InStr関数ではダメです。

hirosi1999
質問者

お礼

おっしゃる通りドキュメントに載ってましたね 検索が足りませんでした。 環境は Windows Script Host でフォルダ内のファイル名から html を自動生成するツールを作ろうとしてましたが、うまくいきました。 アドバイスありがとうございました。

  • Rin-u_u
  • ベストアンサー率35% (6/17)
回答No.4

Left(FileName, InStrRev(FileName, ".", -1, vbTextCompare) - 1) FileName=XXXXX.jpg ファイル名に[.]がある場合もあるので、InStr関数で左から「.」を探すのではなく、InStrRev関数で右から「.」を探します。 ユーザ定義関数 Function BookName(Optional Extension As Boolean = True) As String  Dim FileName As String  Application.Volatile    FileName = Application.ThisWorkbook.Name    If Extension = True Then   BookName = FileName  Else   BookName = Left(FileName, InStrRev(FileName, ".", -1, vbTextCompare) - 1)  End If End Function なおInStrRev関数は、Excel 2000から使えるようになった関数なので、Excel 97以前のバージョンでは使えません。

hirosi1999
質問者

お礼

丁寧な解説とても勉強になりました ありがとうございました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

Replace 関数 http://msdn.microsoft.com/ja-jp/library/bt3szac5.aspx Dim st As String st = "pic.jpg" MsgBox Replace(st, ".jpg", "") こんな感じとか。

hirosi1999
質問者

お礼

シンプルで解りやすいですね ありがとうございました。

  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

こんにちは、 left("filename.jpe",InStr("filename.jpe",".")-1) 結果 filename 関数の組み合わせですが。

hirosi1999
質問者

お礼

アドバイス勉強になりました ありがとうございました。

関連するQ&A

  • msdnのヘルプについて

    都合上、オフラインのヘルプではなく、msdnでヘルプを見てるのですが たとえばアクセスのRunSQLメソッドのヘルプを見たければ、 http://msdn.microsoft.com/ja-jp/library/office/ff194626.aspx のように、msdnのオフィスのページのヘルプを発見できましたが、 違う例えで、VBA.Strings.UCase関数のヘルプを見たい場合は、 オフィスのページのヘルプは用意されてないのでしょうか? UCase関数に関しては、 http://msdn.microsoft.com/ja-jp/library/53e2ew8a(v=VS.90).aspx このページしか見つけられません。 内容はVisual Basicのものですが、VBAライブラリーのものは、VBのページをVBAに読み替えてるしかないのでしょうか? 私は、VBはよく知らないので、VBAのヘルプのページがあればな。と思うのですが、 無理でしょうか?

  • 【至急】セットしたmovefileコマンドの取消

    はじめまして、助けて下さい。 MoveFileEx関数(マイクロソフトMSDNサイト)<https://msdn.microsoft.com/ja-jp/library/cc429621.aspx>を誤って設定してしまい、 絶対に消してはいけないファイルを削除するコマンドを入れてしまいました。 バックアップを取るにしても、ファイルの容量が大きすぎてバックアップを取れません。 この予約コマンド自体を無効にする方法はないでしょうか。

  • Wijn32APIの定数の調べ方

    Win32APIの定数を調べるには、MSDNライブラリ http://msdn.microsoft.com/library/default.aspx で調べるとよいと聞いたことがあります。  そこでAPI関数のSendMessageの定数を調べようと画面右上の「BingでMSDN検索」でSendMessageを入力しEnterを押すと7720件の事例にヒットします。これではとてもSendMessageの定数を調べることは不可能です。  みなさんはVisualBasicでAPI関数の定数をMSDNライブラリで調べるとき、どういう方法で調べていますか?MSDNライブラリでの調べ方を教えてください。

  • MSDNライブラリを VS2010に適用するには

    http://msdn.microsoft.com/ja-jp/library/ms123401.aspx 上記URLのライブラリをVisualStudio2010にインストールする方法が分かりません。 2008や2013向けのインストーラーは見つかるのですが、2010用が見つかりません。 MSDNライブラリをVS2010で使用する方法について、分かる方が居れば、ご教授お願いいたします。

  • C# Font GdiCharSet

    掲題の通り、C#のFontクラスが持つGdiCharSetプロパティについてですが、 これは一体どういったときに使われるものなのでしょうか? msdnに記載されている値を入れれば何か変わるかと思いましたが、 変化は見受けられませんでした。 https://msdn.microsoft.com/ja-jp/library/system.drawing.font.gdicharset(v=vs.110).aspx かなり情けない話ですが、この疑問に対するアプローチの仕方すらよくわからず、 闇雲に調べてみてはいるのですが、全然分かりません… 大変お手数ですが、お詳しい方、ご教授をお願いいたします。

  • WindowsAPIの調べ方

    わからない事があったら「MSDN ライブラリ http://www.microsoft.com/japan/msdn/library/default.asp で調べよう」というのをよくみかけるのですが 例えばWindowsAPIのCreateFiber関数を調べたい場合 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnroad/htm/devmobfaq.asp に説明がでていますが Microsoft.com Japan サイトの検索で「CreateFiber」を検索しても 上記のURLはでてきません。 MSDN ライブラリを使ってAPI等を調べるとき 皆さんはどのようにされているのでしょうか? 効率的な検索方法を知りたいです。 よろしくお願いします。

  • Dateにnewを付与せず(関数として)呼び出した

    Dateにnewを付与せず(関数として)呼び出した場合、下記のようになるみたいですが、何故でしょうか? ・引数がない場合 → 現在の時間(UTC)を表す文字列を返す ・引数あり→引数を無視して、同上 ■質問1 ・この決まりは、「MDN」もしくは「msdn」リファレンスだとどこに記載されているでしょうか?(「ECMA」には記載されているのですが、リファレンス的にどういう位置付けになっているかを確認したいです) ・オブジェクトを生成せず呼び出せるからには、「Date();」関数がどこかに記載されていると思ったのですが、探したけど見つかりません ▽Global オブジェクト   http://msdn.microsoft.com/ja-jp/library/cc427717.aspx ■質問2 >Date オブジェクトに一切パラメータを渡さなかった場合は、オブジェクトは現在の時刻 (UTC) で初期化されます ▽Date オブジェクト   http://msdn.microsoft.com/ja-jp/library/cc427714.aspx ・と言うことは、Date オブジェクトを生成しなくても、「Date();」すると、結局、ここ(Date オブジェクト)に辿り着くのでしょうか? ・「Date();」関数は、どこにあるのでしょうか?(どこに所属してる? UTCが返ってくる理由を知りたい)

  • 大規模なデータウェアハウスを構築・運用するための主要テクノロジー

    大規模なデータウェアハウスを構築・運用するための主要テクノロジー http://www.computerworld.jp/eye/t/sql/server2008/05/ パーティション テーブルとパーティション インデックスに対するクエリ処理の機能強化 http://msdn.microsoft.com/ja-jp/library/ms345599.aspx パーティションの切り替えを使用した効率的なデータの転送 http://msdn.microsoft.com/ja-jp/library/ms191160.aspx パーティション テーブルとパーティション インデックスの変更 http://msdn.microsoft.com/ja-jp/library/ms175864.aspx パーティション・テーブルにおけるパフォーマンスの考察 http://blogs.msdn.com/b/sqljapan/archive/2007/06/13/3260757.aspx

  • VB2005 DataGridViewのClipbordCopyについて

    こんにちは。 VB2005のDataGridViewに表示されている全てのセルをヘッダーも含めてClipbordにコピーしたいのですが、 どのように行えばよろしいでしょうか? MSDNには、 http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.datagridview.clipboardcopymode.aspx のサンプルがありますがアクティブなセルしか取得できません。 ご教授のほどよろしくお願いします。

  • C#でコマンドラインからコンパイルする時のパス設定

    Microsoftのヘルプページもみたのですが、わかりませんでした。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cscomp/html/vcgrfbuildingfromcommandline.asp csc file.cs としても、コンパイルできません。 わかるかたお願いします。