Frage

Warum wird dies nicht alles tun, Ausgang ist identisch mit Eingang? Ich bin verblüfft !!!

string name = ";;;'']][[ zion \\\[[[]]]"  
char[] invalidChars = System.IO.Path.GetInvalidPathChars();
string invalidString = Regex.Escape(new string(invalidChars));

string valid = Regex.Replace(name, "[" + invalidString + "]", "");
War es hilfreich?

Lösung

EDIT:

Ich denke, es kann nur ein Fall von unvollkommenen Testdaten sein (zusammen mit der Funktion ändern, die andere vorgeschlagen haben). Versuchen Sie folgendes:

string name = "tru\\e.jpg";
char[] invalidChars = System.IO.Path.GetInvalidFileNameChars();
string invalidString = Regex.Escape(new string(invalidChars));
string valid = Regex.Replace(name, "[" + invalidString + "]", "");
Console.WriteLine(valid);

I "true.jpg" Ausganges. Ich würde auf jeden Fall viel mehr Tests deuten darauf hin, bevor diese in der Produktion! :)

Andere Tipps

Erhalten Sie ungültige Datei Zeichen verwenden,

char[] invalidChars=System.IO.Path.GetInvalidFileNameChars();

Was meinst du, es wird nicht alles tun? Ich lief die folgend in einer Konsolenanwendung:

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);

Durch die Art und Weise Ihre Syntax falsch war, musste man einige unescaped Zeichen und Sie waren ein Semikolon fehlt.

Und ich habe folgendes Ergebnis.

;;;'']][[ zion \\[[[]]]

Welche ist das richtige Ergebnis. Vielleicht sollten Sie eine neue Frage fragen, was Sie versuchen, Ihr aktueller Ansatz zu tun, weil scheint darauf hinzudeuten, dass Sie nicht ein starkes Verständnis von Regex haben.

Aktualisieren : Versuchen Sie, Dateien Namen zu überprüfen? Wenn dies der Fall möchten Sie wahrscheinlich verwenden:

System.IO.Path.GetInvalidFileNameChars();

Aktualisieren : Hier ist eine Liste von ungültigen Zeichen, die von dieser Methode GetInvalidPathChars() kommt

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'
     };

Also im Grunde die folgenden ungültigen Pfad Zeichen könnte ASCII / Unicode-Zeichen enthalten 1 bis 31 sowie Anführungszeichen ( "), kleiner als (<), größer als (>), Pipe (|), Backspace (\ b ), null (\ 0) und Tabulator (\ t).

Nichts davon scheint in Ihrem ursprünglichen Zeichenfolge auftreten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top