试着做这样的事情;string illegal = "\"M\"\\a/ry/ h**ad:>> a\\/:*?\"| li*tt|le|| la\"mb.?";
string invalid = new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars());foreach (char c in invalid){
illegal = illegal.Replace(c.ToString(), ""); }
但我必须同意这些评论,我可能会试图处理非法路径的来源,而不是试图将一条非法的路径弄成合法的,但可能是无意的。
编辑:或一个潜在的‘更好’的解决方案,使用Regex的。string illegal = "\"M\"\\a/ry/ h**ad:>> a\\/:*?\"| li*tt|le|| la\"mb.?";string regexSearch = new string(Path.GetInvalidFileNameChars())
+ new string(Path.GetInvalidPathChars());Regex r = new Regex(string.Format("[{0}]"
, Regex.Escape(regexSearch)));illegal = r.Replace(illegal, "");
尽管如此,这个问题还是需要被问一问,为什么你要这么做呢?