パスとファイル名内の不正な文字を削除します
ファイル システムの整合性を保護し、オペレーティング システム間での互換性を確保するため、特定の文字はパスとファイル名で不正であるとみなされます。これらの文字を削除することは、ファイル操作やストレージ操作を成功させるために重要です。
この問題を解決する一般的な方法は、System.IO 名前空間の Path.GetInvalidFileNameChars() メソッドと Path.GetInvalidPathChars() メソッドを使用することです。ただし、元の質問で提供されたコードは、必要な機能を正しく実行しません。問題は、先頭と末尾のスペース文字のみを削除する Trim() メソッドに依存していることです。
これを修正するには、文字列内の不正な文字をすべてクリーンアップする、より強力で包括的な方法が必要です。効果的な解決策は、Split() メソッドを使用して、不正な文字セットに従って文字列を分割することです。結果の配列を再組み立てして、問題のある文字を含まない文字列を形成できます。
以下は、指定された文字列から不正な文字を効果的に削除するコードの修正バージョンです:
<code class="language-csharp">using System; using System.IO; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string illegal = "\"M\"" + "\a/ry/ h**ad:>> a\/:*?\"| li*tt|le|| la\"mb.?"; // 删除非法文件字符 string withoutFileInvalidChars = string.Concat(illegal.Split(Path.GetInvalidFileNameChars())); // 删除非法路径字符 string withoutPathInvalidChars = string.Concat(withoutFileInvalidChars.Split(Path.GetInvalidPathChars())); Console.WriteLine(withoutPathInvalidChars); Console.ReadLine(); } } }</code>
さらに、不正な文字を単に削除するのではなく、適切な置換文字に置き換えることもできます。これを行うには、次のコード スニペットに示すように、任意の区切り文字を指定して string.Join() メソッドを使用します。
<code class="language-csharp">string replacedInvalidChars = string.Join("_", illegal.Split(Path.GetInvalidFileNameChars()));</code>
以上がC# でファイル パスとファイル名から不正な文字を効果的に削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。