DOBON.NETお気楽掲示板

■1606 / 親記事)  .NET のワイルドカード仕様について
  
□投稿者/ 海風の岬 -(2022/02/22(Tue) 23:21:36)
  • アイコン日曜プログラマーの素人親父です。ここのHPはいつも大変わかりやすくて勉強させていただいております。
    プログラミング掲示板のほうがよいのかもしれませんが、雑談めいた話なのでこちらで。

    ワイルドカードの「?」は通常、任意の一文字として扱われていますが、ファイル一覧を得るために DirectoryInfo.EnumerateFiles を調べていたところ、
    『 ? (疑問符)  その位置に0個または1個の文字。』とあり、.NET では必ずしも1文字ではないと知りました。
    さらに「*」を拡張子3文字固定で使用すると別の動きがあることも書かれていて、驚きました。
    (https://docs.microsoft.com/ja-jp/dotnet/api/system.io.directory.enumeratefiles?view=net-6.0 より)

    試しに abc.txt / ac.txt などを作って DirectoryInfo.EnumerateFiles の引数をいろいろ変えて試してみましたが、「???.*」で abc.txt / ac.txtの両方とも検索されました。
    ところが 「a??.txt」ではabc.txt / ac.txtの両方とも検索され、「??c.txt」では abc.txt しか検索されませんでした(同じ結果になると思っていました)。

    このあたりの動きがどうもわかりづらく、わかりやすく説明しているHPなどがあれば是非おしえていただきたく。

    まあ、プログラム上でDirectoryInfo.EnumerateFilesの引数には「"*"」のみを使用すればすむ話ではあるのですが、
    ワイルドカードをユーザー(といっても自分ですが)にフォームで入力させようとしていたので想像と違う動作があるとは思ってもみなかったです。
    結局正規表現でファイルの一覧から一部を抽出することにしましたが、
    このあたりの処理って難しいものですね。
    (雑談めいた話なので、返信はなくても問題ありません)

引用返信 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Pass/


- Child Tree -