如果filename有其他字符,那么a-zA-Z0-9!@$%^&*()_+=-[]{}';,.
我们必须用某些字符替换它们或删除。
答案 0 :(得分:6)
resultString = Regex.Replace(subjectString, @"[^a-zA-Z0-9!@$%^&*()_+=[\]{}';,.-]", "X");
应该这样做。
说明:我复制了您的字符列表并将其粘贴到negated character class([^...]
)中。我只需做两个小修改:转义结束括号(\]
)并将短划线放在字符串的末尾。
答案 1 :(得分:5)
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
}