📜  从文件名中删除非法字符 - C# (1)

📅  最后修改于: 2023-12-03 15:21:59.369000             🧑  作者: Mango

从文件名中删除非法字符 - C#

在开发中,我们经常需要处理文件名或文件夹名,有时这些名称包含了一些非法字符,这些字符可能会引起程序崩溃甚至是系统崩溃。因此,在处理这些名称时,我们需要去除这些非法字符。在本文中,我们将介绍如何使用C#去除文件名或文件夹名中的非法字符。

非法字符列表

首先,我们需要知道非法字符的列表,这些字符可能因操作系统不同而不同。下面是一些常见的非法字符:

  • \
  • /
  • :
  • *
  • ?
  • "
  • <
  • >
  • |
  • (空格)
实现

我们可以使用正则表达式来去除文件名或文件夹名中的非法字符。下面是一个方法,它接受一个字符串作为文件名或文件夹名,并返回一个处理后的字符串:

public static string RemoveIllegalCharacters(string filename)
{
    string illegalChars = new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars());
    Regex regex = new Regex(string.Format("[{0}]", Regex.Escape(illegalChars)));
    return regex.Replace(filename, "");
}

这个方法调用了Path.GetInvalidFileNameCharsPath.GetInvalidPathChars方法来获取非法字符列表,然后将它们组合成一个字符串。接下来,我们使用正则表达式来替换这些非法字符。最后返回处理后的字符串。

测试

我们来测试一下这个方法,看看它是否能够正确地去除非法字符:

string filename = @"c:\temp\this/is:a*bad?filename.jpg";
string cleanedFilename = RemoveIllegalCharacters(filename);
Console.WriteLine(cleanedFilename);
// 输出:ctemptisisabadfilename.jpg

这个测试用例中包含了斜杠、冒号、星号、问号等非法字符,我们可以看到这些字符都被正确地去除了。

结论

在处理文件名或文件夹名时,我们需要注意非法字符的存在。使用C#内置的方法和正则表达式,我们可以轻松地去除这些非法字符,以确保程序的稳定性。