C# のファイル名の不正な文字を削除する

Muhammad Husnain 2023年10月12日
  1. C# でファイル名を取得
  2. C#GetFileName() 関数
  3. C# のファイル名から無効な文字を削除する
C# のファイル名の不正な文字を削除する

この記事は、C# を使用してパスからファイル名を取得するための簡単なチュートリアルです。さらに、ファイル名から不正な文字を削除する方法についても説明します。

C# でファイル名を取得

C# ライブラリで提供されているいくつかのメソッドは、フルパスからファイル名を抽出するために使用されます。フルパスには、ドライブ名、フォルダ名の階層、および拡張子が付いた実際のファイル名が含まれる場合があります。

多くの場合、パスからのファイル名が必要になる場合があります。したがって、C# の Path クラスの GetFileName() メソッドを使用して、ファイル名を抽出できます。

C#GetFileName() 関数

関数 getFileName() の構文は次のとおりです。

public static string GetFileName(string completePath);

completePath がファイル名を抽出する必要のあるフルパスを含む文字列である場合、関数はファイル名とその拡張子を string 変数で返します。

GetFileName() の実際の例を見てみましょう。

using System;
using System.IO;
using System.Text;

namespace mynamespace {

  class FileNameExample {
    static void Main(string[] args) {
      string stringPath = "C:// files//textFiles//myfile1.txt";

      string filename = Path.GetFileName(stringPath);
      Console.WriteLine("Filename = " + filename);
      Console.ReadLine();
    }
  }
}

出力:

Filename = myfile1.txt

C# のファイル名から無効な文字を削除する

上記の関数は、ファイル名に不正な文字が含まれている場合、ArgumentException を生成する可能性があります。これらの不正な文字は、関数 GetInvalidPathChars() および GetInvalidFilenameChars() で定義されています。

次の正規表現と Replace 関数を使用して、ファイル名から無効または不正な文字を削除できます。

using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;

namespace mynamespace {

  class FileNameExample {
    static void Main(string[] args) {
      string invalidFilename = "\"M\"\\y/Ne/ w**Fi:>> l\\/:*?\"| eN*a|m|| e\"ee.?";
      string regSearch =
          new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars());
      Regex rg = new Regex(string.Format("[{0}]", Regex.Escape(regSearch)));
      invalidFilename = rg.Replace(invalidFilename, "");
      Console.WriteLine(invalidFilename);
    }
  }
}

出力:

MyNe wFi l eNam eee.

上記のコードスニペットでは、両方の関数(つまり、GetInvalidPathChars()GetInvalidFilenameChars())からの無効な文字を連結し、結果の正規表現を作成しました。

その後、指定したファイル名(複数の無効な文字を含む)からすべての無効な文字を検索し、Replace 関数を使用して空白に置き換えます。

Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn