LoginSignup
7
8

More than 5 years have passed since last update.

ファイル名に日時を付加する(正規表現)

Last updated at Posted at 2016-09-05

背景

某ファイルコピー処理:smile:において、ファイル名が重複しないようコピー日時をファイル名に付加したいと思いました。

ちょっと心が折れたので、簡単な所だけ先出だっ!

方針

次の様な思いが交錯して実装しました。

  • 元のファイル名は極力尊重する
  • 日時はファイル名の後ろに付ける
  • ファイル名には拡張子は含まない
    む、この書き方余り良くないぞよ
  • だらだらと処理を書くのはかっちょ悪い
  • ちゅー事は正規表現だな

結論

Regex reg = new Regex(@"(?=\.\w+$)|(?<!\.\w+)$");
string fileName = reg.Replace(元ファイル名, DateTime.Now.ToString("yyyyMMddHHmmssfff"));

ま、一行で書いても良いんですけどね。

解説

えとー
(?=\.\w+$)(?<!\.\w+)$を日時で置き換えろって事ですね。

(?=\.\w+$)の方は、文字列末尾にある.拡張子の先頭位置にマッチします。
なので、ファイル名の末尾に日時が挿入されます。

(?<!\.\w+)$の方は、末尾に.拡張子が存在しない文字列末尾にマッチします。
なので、ファイル名の末尾に日時が挿入されます。(あ、おんなじだ)

(?=\.\w+$)(?<!\.\w+)$は排他的な条件なので、与えられた文字列に対して、日時が必ず1セットだけ付加される事になります。


やたー

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8