ファイル名からある箇所のみを抜き取る – プログラミング – Home

ファイル名からある箇所のみを抜き取る
 
通知
すべてクリア

[解決済] ファイル名からある箇所のみを抜き取る


おれっち
 おれっち
(@おれっち)
ゲスト
結合: 21年前
投稿: 14
Topic starter  

あるファイル名のある箇所だけの抜き取り方がわからないので、
知っている方は教えてください。

例)
「 ?????_?????_20040625_?????.txt 」というのファイルの「 20040625 」の部分だけ
を抜き取りたい


引用未解決
トピックタグ
aetos
(@aetos)
Noble Member
結合: 6年前
投稿: 1480
 

ファイル名といえど、所詮は文字列でしかありません。
フォルダ名を取るとか拡張子を取るとか、ファイル名固有の処理ではない以上、
普通に文字列処理でいいでしょう。

それ以上の具体的な答えをお望みでしたら、
そちらも具体的な環境を提示してください。


返信引用
おれっち
 おれっち
(@おれっち)
ゲスト
結合: 21年前
投稿: 14
Topic starter  

シャノンさん、すみません。

開発環境は VC++ .NET( MFC )です。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 23年前
投稿: 1301
 

抜き取る規則が不明です。

- X文字目からY文字?
- 数字の連続?
- 二つ目の_から次の_まで?
- ほかのなにか?

ちゃんと質問しないとちゃんと答えてもらえません。


返信引用
おれっち
 おれっち
(@おれっち)
ゲスト
結合: 21年前
投稿: 14
Topic starter  

抜き取る条件は、二つ目の_から次の_までです。

説明不足で、どうもすみません。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 23年前
投稿: 1301
 

#include <string.h>
#include <stdio.h>

int main() {

char filename[] = abcdef_ghijkl_1234567_mnopqrstuvw.xyz;
char* p;
strtok(filename, _); strtok(0, _);
p = strtok(0, _); strtok(0, _);
puts(p);

return 0;
}


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

なら、文字列のはじめから一バイトずつチェックして二つ目の_が出てきたら
その次の位置から一バイトずつ取得用のバッファに追加していく。
三番目の_が見つかったら、追加をやめて終了。

ただ、?部分の桁数や取得する部分の桁数がいつも同じなら、
直接、n文字目からm文字分を取り出すようにした方が手っ取り早いかも。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

あぁ、私の泥臭すぎますね。(T-T)


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 22年前
投稿: 830
 

sscanf(src, %*[^_]_%*[^_]_%[^_], dst); とか。
# 顔文字みたいに見えるが大マジ。


返信引用
おれっち
 おれっち
(@おれっち)
ゲスト
結合: 21年前
投稿: 14
Topic starter  

皆さん、どうもありがとうございました。
おかげさまで解決しました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました