📅  最后修改于: 2023-12-03 15:21:59.369000             🧑  作者: Mango
在开发中,我们经常需要处理文件名或文件夹名,有时这些名称包含了一些非法字符,这些字符可能会引起程序崩溃甚至是系统崩溃。因此,在处理这些名称时,我们需要去除这些非法字符。在本文中,我们将介绍如何使用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.GetInvalidFileNameChars
和Path.GetInvalidPathChars
方法来获取非法字符列表,然后将它们组合成一个字符串。接下来,我们使用正则表达式来替换这些非法字符。最后返回处理后的字符串。
我们来测试一下这个方法,看看它是否能够正确地去除非法字符:
string filename = @"c:\temp\this/is:a*bad?filename.jpg";
string cleanedFilename = RemoveIllegalCharacters(filename);
Console.WriteLine(cleanedFilename);
// 输出:ctemptisisabadfilename.jpg
这个测试用例中包含了斜杠、冒号、星号、问号等非法字符,我们可以看到这些字符都被正确地去除了。
在处理文件名或文件夹名时,我们需要注意非法字符的存在。使用C#内置的方法和正则表达式,我们可以轻松地去除这些非法字符,以确保程序的稳定性。