如果filename有另一个字符,那么a-zA-Z0-9!@$%^&*()_+=-[]{}';,.
我们必须将它们替换为某些字符或删除.
resultString = Regex.Replace(subjectString, @"[^a-zA-Z0-9!@$%^&*()_+=[\]{}';,.-]", "X");
Run Code Online (Sandbox Code Playgroud)
应该这样做.
说明:我复制了您的字符列表并将它们粘贴到一个否定的字符类([^...])中.我只需做两个小修改:转义结束括号(\])并将短划线放在字符串的末尾.
using System.Linq;
using System.IO;
string path = ...;
IEnumerable<char> invalidChars = Enumerable.Concat(
Path.GetInvalidFileNameChars(),
Path.GetInvalidPathChars());
foreach (char c in invalidChars)
{
path = path.Replace(c, ''); // or any char you want
}
Run Code Online (Sandbox Code Playgroud)