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

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

DDD
DDDoriginal
2025-01-21 09:06:12256parcourir

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

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

La tâche de cet exemple de programmation est de supprimer les caractères de chemin et de fichier non valides d'une chaîne sans générer d'erreurs. Bien que le code donné soit destiné à résoudre ce problème, il ne semble pas fonctionner. Analysons les pièces manquantes :

Le code

tente de supprimer les caractères illégaux d'une chaîne à l'aide de la méthode Trim. Cependant, Trim ne peut supprimer que les caractères d'espacement tels que les espaces et les tabulations au début et à la fin d'une chaîne. Cela n'a aucun effet sur les caractères autres que des espaces.

Afin de supprimer efficacement les caractères illégaux, vous devez utiliser les méthodes spécifiques fournies par l'espace de noms System.IO. Voici le code modifié qui gère cette tâche efficacement :

<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>

Dans ce code modifié, nous avons remplacé la méthode Replace par la méthode Trim, qui nous permet de spécifier quels caractères supprimer de la chaîne. En appelant Path.GetInvalidFileNameChars() et Path.GetInvalidPathChars() nous obtenons respectivement des tableaux de caractères de fichier et de chemin invalides. Nous transmettons ensuite ces tableaux comme caractères à remplacer, les supprimant ainsi de la chaîne d'origine.

Voici une autre solution proposée par Ceres dans un autre fil de discussion :

<code class="language-csharp">public string RemoveInvalidChars(string filename)
{
    return string.Concat(filename.Split(Path.GetInvalidFileNameChars()));
}</code>

Ce code utilise la méthode Split pour diviser une chaîne à l'emplacement des caractères non valides, puis réassemble les sous-chaînes résultantes pour créer une nouvelle chaîne qui ne contient pas de caractères non valides.

Vous préférerez peut-être remplacer les caractères invalides par des caractères spécifiques, tels que le trait de soulignement :

<code class="language-csharp">public string ReplaceInvalidChars(string filename)
{
    return string.Join("_", filename.Split(Path.GetInvalidFileNameChars()));    
}</code>

Ce code remplace tous les caractères invalides par des traits de soulignement, ce qui le rend adapté aux scénarios dans lesquels vous souhaitez conserver la structure d'origine d'un chemin ou d'un nom de fichier.

Ces solutions fournissent des moyens puissants et efficaces pour éliminer les caractères illégaux dans les chaînes de fichiers et de chemins, garantissant ainsi la compatibilité et évitant les erreurs potentielles du système de fichiers.

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:
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