In unserer Anwendung gibt der Benutzer Daten von MS Word in asp.net textarea control ein und schließlich werden Daten in SQL Server gespeichert. Aus irgendeinem Grund gibt es wenige Junk-Zeichen, die wie kleine Quadrate aussehen, wenn sie von SQL Server Management Studio aus angezeigt werden.
Dies verursacht einen Fehler beim Erzeugen von Crystal Reports.
Ich brauche eine Regex, die alle diese Zeichen zusammen mit Kugeln entfernt. Die einzige gültige Eingabe ist
%Vor%Tab-Leerzeichen sollten auch durch Leerzeichen ersetzt werden. Eingabetaste oder Neue Zeile ist erlaubt.
Momentan verwende ich
%Vor%Es funktioniert jedoch nicht, um Aufzählungszeichen oder Tabulatorräume zu entfernen.
Kann mir irgendein Regex Ninja bei diesem Problem helfen? Danke im Voraus.
Sie können zwei Regexe verwenden. Die erste mit dem Muster "\t|<bullet>"
(wobei <bullet>
für die Darstellung des Aufzählungszeichens steht) wird zuerst verwendet, um TABs und Aufzählungszeichen durch Leerzeichen zu ersetzen ( " "
). Die zweite, deren Muster ein negierter Zeichensatz ist, der Ihre Liste gültiger Zeichen enthält, wird als zweites verwendet, um ungültige Zeichen durch die leere Zeichenfolge ( ""
) zu ersetzen, dh um sie los zu werden. Da CR- und LF-Zeichen (und Leerzeichen) beibehalten werden müssen, müssen diese zu den gültigen Zeichen hinzugefügt werden:
Ausgabe:
%Vor% Beachten Sie, dass das TAB nach árvíztűrő
durch ein einzelnes Leerzeichen ersetzt wurde.
Über Aufzählungszeichen:
Ich habe eine Aufzählungsliste in Word erstellt und sie in eine Textfläche auf einer Webseite kopiert. Dann speicherte ich den HTML und fand heraus, dass die Kugeln als das UTF-8-kodierte Zeichen gespeichert werden. E280A2
. Das habe ich oberhalb der "Darstellung der Kugel" genannt. Sie sollten die binäre Darstellung der möglichen Aufzählungszeichen herausfinden und sie dem ersten Muster hinzufügen: Entweder sie OR zum TAB-Zeichen oder alle in einen Zeichensatz einfügen:
Ausgabe (Sie sollten die Konsolenschriftart in Lucida Console ändern, um das Aufzählungszeichen zu sehen):
%Vor%Nun wurde zusätzlich zu TAB das Geschoss am Anfang jeder Zeile durch ein Leerzeichen ersetzt.
Ich denke, dass Sie das zugrunde liegende Problem diagnostizieren sollten, anstatt " irgendeinen Grund " zu sagen und zu versuchen, das Symptom zu beheben, aber das ist nicht Ihre Frage:
Sie wollen diese Regex:
%Vor% Um ein beliebiges Zeichen zu finden, das nicht erlaubt ist, und dann sollten Sie es durch String.Empty
ersetzen. Dann wollen Sie nur passen:
Und ersetzen Sie es durch " "
.