Maison > développement back-end > C++ > Comment supprimer efficacement les caractères illégaux des chemins de fichiers et des noms de fichiers en C# ?

Comment supprimer efficacement les caractères illégaux des chemins de fichiers et des noms de fichiers en C# ?

Linda Hamilton
Libérer: 2025-01-21 08:51:10
original
1029 Les gens l'ont consulté

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

Effacer les caractères illégaux dans les chemins et les noms de fichiers

Pour protéger l'intégrité du système de fichiers et garantir la compatibilité entre les systèmes d'exploitation, certains caractères sont considérés comme illégaux dans les chemins et les noms de fichiers. La suppression de ces caractères est essentielle au succès des opérations sur les fichiers et des opérations de stockage.

Une façon courante de résoudre ce problème consiste à utiliser les méthodes Path.GetInvalidFileNameChars() et Path.GetInvalidPathChars() dans l'espace de noms System.IO. Cependant, le code fourni dans la question initiale ne fait pas correctement ce qui est requis. Le problème repose sur la méthode Trim(), qui supprime uniquement les espaces de début et de fin.

Pour corriger cela, une méthode plus puissante et plus complète est nécessaire pour nettoyer toutes les occurrences de caractères illégaux dans les chaînes. Une solution efficace consiste à utiliser la méthode Split() pour diviser la chaîne en fonction du jeu de caractères illégal. Le tableau résultant peut ensuite être réassemblé pour former une chaîne sans caractères problématiques.

Ce qui suit est une version modifiée du code qui supprime efficacement les caractères illégaux d'une chaîne spécifiée :

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();
        }
    }
}
Copier après la connexion

De plus, vous pouvez choisir de remplacer les caractères illégaux par des caractères de remplacement appropriés au lieu de simplement les supprimer. Pour ce faire, utilisez la méthode string.Join() avec un délimiteur de votre choix, comme indiqué dans l'extrait de code suivant :

string replacedInvalidChars = string.Join("_", illegal.Split(Path.GetInvalidFileNameChars()));
Copier après la connexion

Cette méthode remplace tous les caractères illégaux par des traits de soulignement, fournissant une chaîne lisible et cohérente. Des caractères de remplacement spécifiques peuvent être personnalisés pour répondre à vos besoins spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal