Eliminar caracteres ilegales en nombre de archivo en C#

Muhammad Husnain 12 octubre 2023
  1. Obtener nombre de archivo en C#
  2. la función GetFileName() en C#
  3. Eliminar caracteres no válidos del nombre de archivo en C#
Eliminar caracteres ilegales en nombre de archivo en C#

Este artículo es un breve tutorial sobre cómo obtener nombres de archivos de la ruta usando C#. Además, analiza el método para eliminar caracteres ilegales de los nombres de archivo.

Obtener nombre de archivo en C#

Algunos métodos proporcionados en la biblioteca de C# se utilizan para extraer el nombre de archivo de una ruta completa. La ruta completa puede contener el nombre de la unidad, la jerarquía de los nombres de las carpetas y el nombre real del archivo con la extensión.

En muchas situaciones, es posible que necesitemos el nombre de archivo de las rutas. Por lo tanto, podemos usar el método GetFileName() en la clase Path de C# para extraer el nombre del archivo.

la función GetFileName() en C#

La sintaxis de la función getFileName() es:

public static string GetFileName(string completePath);

Donde completePath es una cadena que contiene la ruta completa de la que necesitamos extraer el nombre del archivo, la función devuelve el nombre del archivo con su extensión en una variable string.

Veamos el ejemplo de trabajo de GetFileName().

using System;
using System.IO;
using System.Text;

namespace mynamespace {

  class FileNameExample {
    static void Main(string[] args) {
      string stringPath = "C:// files//textFiles//myfile1.txt";

      string filename = Path.GetFileName(stringPath);
      Console.WriteLine("Filename = " + filename);
      Console.ReadLine();
    }
  }
}

Producción :

Filename = myfile1.txt

Eliminar caracteres no válidos del nombre de archivo en C#

La función mencionada anteriormente puede dar ArgumentException si se encuentran algunos caracteres ilegales en el nombre del archivo. Estos caracteres ilegales se definen en la función GetInvalidPathChars() y GetInvalidFilenameChars().

Podemos eliminar los caracteres no válidos o ilegales del nombre del archivo utilizando la siguiente expresión regular y la función Replace.

using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;

namespace mynamespace {

  class FileNameExample {
    static void Main(string[] args) {
      string invalidFilename = "\"M\"\\y/Ne/ w**Fi:>> l\\/:*?\"| eN*a|m|| e\"ee.?";
      string regSearch =
          new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars());
      Regex rg = new Regex(string.Format("[{0}]", Regex.Escape(regSearch)));
      invalidFilename = rg.Replace(invalidFilename, "");
      Console.WriteLine(invalidFilename);
    }
  }
}

Producción :

MyNe wFi l eNam eee.

En el fragmento de código anterior, hemos concatenado los caracteres no válidos de ambas funciones (es decir, GetInvalidPathChars() y GetInvalidFilenameChars()) y hemos creado una expresión regular del resultado.

Después de eso, buscamos todos los caracteres no válidos de nuestro nombre de archivo especificado (que contiene varios caracteres no válidos) y los reemplazamos con espacios en blanco usando la función Replace.

Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn