Ersetzen Sie alle nicht-ASCII-Zeichen, ausgenommen rechten Winkel Zeichen in C#

Schreiben einer Datei-Dienstprogramm zum entfernen alle nicht-ASCII-Zeichen aus Dateien. Ich habe diese Regex:

Regex rgx = new Regex(@"[^\u0000-\u007F]");

Welche gut funktioniert. Aber leider, ich habe entdeckt, dass einige dumme Menschen mit einem rechten Winkel () als Trennzeichen in Ihren Dateien, so dass diese entfernt als gut, aber ich brauche diese!

Ich bin Recht neu in Regex, und ich verstehe die Grundlagen, aber jede Hilfe wäre genial!

Vielen Dank im Voraus!

  • BITTE TUN Sie DAS NICHT
  • warum nicht?
  • Denn es ist ¡⅁uoɹʍ puɐ ⅂IɅƎ, das ist, warum!!!
  • Okay, ich sehe deinen Punkt, aber ich arbeite mit speziellen Dateien, die ich weiß, der Inhalt und ich weiß sicher, dass keiner von diesen würde strip-Zeichen aus anderen Sprachen oder so etwas. Ich denke, Sie sollten überlegen, Rahmen, bevor Sie kommentieren!
  • Der Punkt ist, dass ASCII ist fünfzig Jahre veraltet; es ist aus 1960er Jahre um Gottes Willen! Wenn es Codepunkte größer als 127 in Ihrem text, dann sind Sie es für einen Grund, und Sie sollten nicht munter zu verstümmeln, was jemand anderes gemacht hat, einige Probleme zu produzieren. Sie nie brauchen, um dies zu tun, und Sie nie sollten dies tun. Bitte nicht kastrieren richtige Unicoe text zurück in die Dinosaurier-Tage vor, die Sie noch nicht einmal geboren waren. Willkommen im Neuen Jahrtausend: der text ist nicht ASCII!! əɹnʇnɟ əɥʇ oʇuᴉ ƨpɹɐʍʞɔɐq ʞlɐʍ ʇou op :noλ ⅁əq ich
  • Schau, ich bin ein student auf die Platzierung jetzt, und ich habe geworfen worden, dieses Dienstprogramm, das muss ich schreiben, dass ich keine Ahnung habe, wie das zu tun. Jetzt bin ich Experimentieren mit den Dingen und versucht herauszufinden, was zu tun ist, hoffentlich auch lernen, wie ich es mache. Ich habe keine Ahnung, wie dieses Dienstprogramm wird sich herausstellen, oder wie werde ich es schaffen, aber gerade jetzt, ich versuche nur die Dinge. Also, bitte, BITTE wieder aus und lassen mich Dinge ausprobieren. Nehmen Sie Ihre Predigten woanders.
  • Wenn Sie die Zuordnung zum konvertieren von Unicode nach ASCII, dann bitte sehr. Was konkret ist Ihre Aufgabe? Oft Studenten bellen den falschen Baum rauf. Wenn Sie erzählt wurden, zu zerstören, Unicode, dann fein, aber wenn nicht, was sind Sie wirklich versuchen, zu tun?
  • Gut, wenn ich bin auf dem Holzweg, lassen Sie mich, wie soll ich lernen? Bombardieren mich mit herablassenden Kommentare einfach nur fühle ich mich ein bisschen wie dick und hilft mir nicht bei allen. Mein Programm ist im Grunde 'fix' - Dateien, die wir haben, zur Verfügung gestellt wurde. Einschließlich entfernen von Sonderzeichen. Wir wissen, was die Dateien müssen enthalten sein ("fest" zu unseren standards. Meine Skillung erwähnt ASCII-Zeichen, also bin ich zu Experimentieren mit dem, was ich weiß, wie ich sagte. Nun, es sei denn, Sie können wirklich helfen Sie mir mit diesem problem, was ist der Punkt in unserem Gespräch?
  • Wenn Sie die Zuordnung zu entfernen, code point, die außerhalb des ASCII-Bereichs, das ist ziemlich einfach. Der offensichtlichste Ansatz zu ergänzen, der ASCII-Satz. ASCII ist [\x00-\x7F], so seine Ergänzung ist [^\x00-\x7F. Je nachdem, welche version von C#, die Sie verwenden, können Sie in der Lage sein zu verwenden charclass Subtraktion: z.B. [\p{L}-[\p{IsBasicLatin}]], die Zeichen über 256. Dort hilft das?
  • Danke, ja, aber das hatte ich bereits getan, dass ich mich, mein problem war, dass ich brauchte, um zu zählen rechten Winkel (), da diese als Trennzeichen verwendet in einigen der Dateien. Und bevor alles Durcheinander kommt, gibt Es 4 Satz delmiters in unseren Dateien - ',' '|' ';' " - und wie Sie wissen, die einzige, die nicht in der Gruppe ist - So meine Regex braucht, um zu Sortieren. SO, ich habe versucht, alle Antworten, und Sie immer noch nicht arbeiten.. Ideen?
  • Die Menge aller Zeichen, die weder ASCII noch U+00AC NICHT UNTERSCHREIBEN ist [^\x00-\x7F\xAC] oder [^\u00AC\u0000-\u007F] ist die erste bringt Sie in Schwierigkeiten. Jedoch, dies wird nicht heilen Ihre "? " - problem, denn das problem ist nicht, dass Sie nicht-ASCII-Zeichen (denken Sie daran, ein NICHT-ZEICHEN ist nicht-ASCII -, zu). Es ist, dass Sie eine Codierung falsch angegeben irgendwo. Macht das Sinn? Dies ist der Grund, warum manchmal nur die Antwort auf die Frage, die sich nicht auf das eigentliche problem: der Fragesteller falsch verstanden hat, was das wirkliche problem ist, und deshalb overspecifies eine Lösung zu dem, was nicht sein problem.
  • Erm, ja, ich denke schon.. Aber ich habe nicht angegebenen Codierung irgendwo in meinem Programm, oder, wenn das nicht der Fall, hätte ich keine Ahnung, wie es zu ändern. Aber ich hätte gedacht, dass, wenn ich die Regex angewendet, wäre es für die rechten Winkel in der Ausgabe, auch wenn es nur war "????", weil ich weiß, dass es die Platzierung in der Datei. Weißt du, was ich meine?
  • Danke für Eure Hilfe, meine Datei gespeichert wurde mit ANSI enoding anstelle von Unicode, und das war die Ursache für den Streit mit der Ausgabe und Regex. Und die möchte ich glaube ich nicht falsch verstehen, meine Frage, es ist nur von der Frage und bekommen Sie die Lösung, ein weiteres problem entdeckt wurde. Ich danke Euch für Eure Hilfe, ich bin dankbar, aber wie ich schon sagte, wird herablassend nie hilft.

InformationsquelleAutor New Start | 2010-11-15
Schreibe einen Kommentar