HOWTO · Csharp

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 関数を使用して空白に置き換えます。