![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
お世話になります。
"picture.jpg" のような文字列から 拡張子を省いた値を
取りだすにはどうすれば良いのでしょうか?
Java でいう str.lastIndexOf(".") や substr()
のような関数はあるのでしょうか?
msdn 関数
http://msdn.microsoft.com/ja-jp/library/32s6akha …
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 などでファイル名の後ろからピリオドを探すとか、拡張子の
ピリオドが無い場合の処理を追加すれば良いだけですが。
ご参考までに。
No.5
- 回答日時:
環境が書かれてませんが、VB.NET系(私が調べたのは2005(Framework2.0)ですが)
での話を前提として書きます。
>Java でいう str.lastIndexOf(".") や substr()
>のような関数はあるのでしょうか?
Javaは分からないですが、ありますよ。普通にヘルプに載ってます。
substr は SubString ですが。
下の内容をご覧になると分かると思いますが、両方ともStringクラスのメソッドです。
http://msdn.microsoft.com/ja-jp/library/system.s …
なお、こういう聞き方をされているのでお分かりかとは思いますが、
InStr関数ではダメです。
おっしゃる通りドキュメントに載ってましたね
検索が足りませんでした。
環境は Windows Script Host でフォルダ内のファイル名から
html を自動生成するツールを作ろうとしてましたが、うまくいきました。
アドバイスありがとうございました。
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以前のバージョンでは使えません。
No.2
- 回答日時:
Replace 関数
http://msdn.microsoft.com/ja-jp/library/bt3szac5 …
Dim st As String
st = "pic.jpg"
MsgBox Replace(st, ".jpg", "")
こんな感じとか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- その他(コンピューター・テクノロジー) CPUクーラーをdiyしたい、けどパーツの探し方がわからない。。 2 2022/11/07 12:52
- 中学校 中学 英語 3 2023/04/02 09:50
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- Excel(エクセル) LEFT関数で文字数を指定しないで取りだす方法 7 2023/06/30 09:49
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
- その他(ソフトウェア) コマンドプロンプトについて教えてください。 状況: 画像編集ソフト上でネットから保存した画像を使うの 3 2022/05/26 11:14
- 英語 Of Mary’s five brothers, Miki is the most talented 2 2022/04/14 14:08
- PHP 画像ファイルの名前をそのままURLにする 3 2022/10/16 11:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
同じソリューション内の別のプ...
-
PHPからWindowsログインユーザ...
-
DataGridViewのチェックボック...
-
コネクション・セッション・ト...
-
Accessの画面更新を一時的に停...
-
フォームへの再表示方法
-
ASPで画面間のパラメタ受け渡し
-
DVDの中身が表示されません。
-
Eclipseでクリーンが出来ない
-
htmlでsubmit送信時、actionよ...
-
ブラウザの×ボタン(閉じるボタ...
-
c# 文字列の最後から1文字削除...
-
Fancyboxのiframe内に閉じるボタン
-
SqlDataSouceデータソースの構...
-
DVD-Rの「セッションを閉じる」...
-
input button の文字の色を2色...
-
C# ボタンを押すとyahooのサイ...
-
C#でドラッグ&ドロップが機能し...
-
ポストバック時の画面スクロー...
-
SESSIDってなんですか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同じソリューション内の別のプ...
-
WinHttpをC#で使用したい
-
バイナリーデータを16進数に...
-
EXCEL VBAをWEB上で実行し...
-
実行時にコントロールのイベン...
-
ActiveXの呼び方
-
メソッドの調べ方
-
アクセスのレファレンス・ブッ...
-
読み込むdllが名前違いでたくさ...
-
"picture.jpg" の "picture" を...
-
getParameterで値が取得できず...
-
Accessの画面更新を一時的に停...
-
コネクション・セッション・ト...
-
DataGridViewのチェックボック...
-
VBAで一時中断したプログラムの...
-
c# 文字列の最後から1文字削除...
-
Webページ上のボタン等の位置を...
-
リンクでPOSTデータを送信する...
-
aspxをhtmlに変換する方法について
-
submitボタンにvalue属性の値で...
おすすめ情報