Qu'entendez-vous par cela ne fera rien? Je courus ce qui suit dans une application console:
string name = ";;;'']][[ zion \\\\[[[]]]";
char[] invalidChars = System.IO.Path.GetInvalidPathChars();
string invalidString = Regex.Escape(new string(invalidChars));
string valid = Regex.Replace(name, "[" + invalidString + "]", "");
Console.WriteLine(valid);
Par la façon dont votre syntaxe était mauvaise, vous aviez des personnages et unescaped vous manque un point-virgule.
Et j'ai obtenu le résultat suivant.
;;;'']][[ zion \\[[[]]]
Quel est le résultat correct. Peut-être que vous devriez poser une nouvelle question sur ce que vous essayez de faire parce que votre approche actuelle semble indiquer que vous n'avez pas une bonne compréhension de Regex.
Mise à jour: Essayez-vous de vérifier les noms de fichiers? Si oui, vous voulez probablement utiliser:
System.IO.Path.GetInvalidFileNameChars();
Mise à jour: Voici une liste des caractères non valides qui vient de cette méthode GetInvalidPathChars()
RealInvalidPathChars = new char[] {
'"', '<', '>', '|', '\0', '\x0001', '\x0002', '\x0003', '\x0004', '\x0005', '\x0006', '\a', '\b', '\t', '\n', '\v',
'\f', '\r', '\x000e', '\x000f', '\x0010', '\x0011', '\x0012', '\x0013', '\x0014', '\x0015', '\x0016', '\x0017', '\x0018', '\x0019', '\x001a', '\x001b',
'\x001c', '\x001d', '\x001e', '\x001f'
};
Donc, fondamentalement, les éléments suivants sont des caractères de chemin non valide pourrait inclure Caractères ASCII/Unicode 1 à 31, ainsi que quote ("), inférieur à (<), supérieur à (>), pipe (|), retour arrière (\ b), null (\ 0) et tabulation (\ t)
Aucun d'entre eux ne semble se produire dans votre chaîne d'origine.
Vous pouvez avoir posté votre chaîne 'nom' incorrectement ... –