ホームページ > バックエンド開発 > C++ > C# でファイル パスとファイル名から不正な文字を効果的に削除する方法

C# でファイル パスとファイル名から不正な文字を効果的に削除する方法

Linda Hamilton
リリース: 2025-01-21 08:51:10
オリジナル
966 人が閲覧しました

How to Effectively Remove Illegal Characters from File Paths and Filenames in C#?

パスとファイル名内の不正な文字を削除します

ファイル システムの整合性を保護し、オペレーティング システム間での互換性を確保するため、特定の文字はパスとファイル名で不正であるとみなされます。これらの文字を削除することは、ファイル操作やストレージ操作を成功させるために重要です。

この問題を解決する一般的な方法は、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート