パスとファイル名内の不正な文字を削除します
このプログラミング例のタスクは、エラーを生成せずに文字列から無効なパスとファイル文字を削除することです。指定されたコードはこの問題を解決することを目的としていますが、機能していないようです。欠けている部分を分析しましょう:
コードは、Trim
メソッドを使用して文字列から不正な文字を削除しようとします。ただし、Trim
は文字列の先頭と末尾にあるスペースやタブなどの空白文字のみを削除できます。空白以外の文字には影響しません。
不正な文字を効果的に削除するには、System.IO
名前空間が提供する特定のメソッドを使用する必要があります。このタスクを効率的に処理する修正コードは次のとおりです:
<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.?"; // 删除无效的文件字符 illegal = illegal.Replace(Path.GetInvalidFileNameChars(), ""); // 删除无效的路径字符 illegal = illegal.Replace(Path.GetInvalidPathChars(), ""); Console.WriteLine(illegal); Console.ReadLine(); } } }</code>
この変更されたコードでは、Replace
メソッドを Trim
メソッドに置き換えました。これにより、文字列から削除する文字を指定できるようになります。 Path.GetInvalidFileNameChars()
と Path.GetInvalidPathChars()
を呼び出すと、それぞれ無効なファイル文字とパス文字の配列が取得されます。次に、これらの配列を置換する文字として渡し、元の文字列からそれらを効果的に削除します。
これは、Ceres が別のディスカッション スレッドで提供した別の解決策です:
<code class="language-csharp">public string RemoveInvalidChars(string filename) { return string.Concat(filename.Split(Path.GetInvalidFileNameChars())); }</code>
このコードは、Split
メソッドを使用して無効な文字の位置で文字列を分割し、結果の部分文字列を再組み立てして、無効な文字を含まない新しい文字列を作成します。
無効な文字をアンダースコアなどの特定の文字に置き換えることもできます:
<code class="language-csharp">public string ReplaceInvalidChars(string filename) { return string.Join("_", filename.Split(Path.GetInvalidFileNameChars())); }</code>
このコードはすべての無効な文字をアンダースコアに置き換えるので、パスまたはファイル名の元の構造を保持したいシナリオに適しています。
これらのソリューションは、ファイルおよびパス文字列内の不正な文字を排除し、互換性を確保し、潜在的なファイル システム エラーを防ぐ強力かつ効果的な方法を提供します。
以上がファイルパスとファイル名から不正な文字を効果的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。