Wie man eine Textdatei mit C # analysiert
Durch text-Formatierung meinte ich, etwas komplizierter.
Zunächst begann ich manuell hinzufügen die 5000 Zeilen aus der text-Datei, die ich bin, diese Frage für,in meinem Projekt.
Die text-Datei hat 5000 Zeilen mit unterschiedlicher Länge.Zum Beispiel:
1 1 ITEM_ETC_GOLD_01 골드(소) xxx xxx xxx_TT_DESC 0 0 3 3 5 0 180000 3 0 1 0 0 255 1 1 0 0 0 0 0 0 0 0 0 0 -1 0 -1 0 -1 0 -1 0 -1 0 0 0 0 0 0 0 100 0 0 0 xxx item\etc\drop_ch_money_small.bsr xxx xxx xxx 0 2 0 0 1 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1 표현할 골드의 양(param1이상) -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx 0 0
1 4 ITEM_ETC_HP_POTION_01 HP 회복 약초 xxx SN_ITEM_ETC_HP_POTION_01 SN_ITEM_ETC_HP_POTION_01_TT_DESC 0 0 3 3 1 1 180000 3 0 1 1 1 255 3 1 0 0 1 0 60 0 0 0 1 21 -1 0 -1 0 -1 0 -1 0 -1 0 0 0 0 0 0 0 100 0 0 0 xxx item\etc\drop_ch_bag.bsr item\etc\hp_potion_01.ddj xxx xxx 50 2 0 0 1 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 120 HP회복양 0 HP회복양(%) 0 MP회복양 0 MP회복양(%) -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx 0 0
1 5 ITEM_ETC_HP_POTION_02 HP 회복약 (소) xxx SN_ITEM_ETC_HP_POTION_02 SN_ITEM_ETC_HP_POTION_02_TT_DESC 0 0 3 3 1 1 180000 3 0 1 1 1 255 3 1 0 0 1 0 110 0 0 0 2 39 -1 0 -1 0 -1 0 -1 0 -1 0 0 0 0 0 0 0 100 0 0 0 xxx item\etc\drop_ch_bag.bsr item\etc\hp_potion_02.ddj xxx xxx 50 2 0 0 2 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 220 HP회복양 0 HP회복양(%) 0 MP회복양 0 MP회복양(%) -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx -1 xxx 0 0
Den text zwischen dem ersten Zeichen(1) und das zweite Zeichen(1/4/5) ist nicht ein Leerzeichen,es ist ein tab.Es gibt keine Leerzeichen in text-Datei.
Was ich will:
Möchte ich, um die zweite Zahl(In den drei Zeilen, die ich oben gepostet,die zweite ganze zahlen sind 1, 4 und 5) und die Zeichenfolge in der Mitte jeder Zeile zeigt den Pfad(Es beginnt mit "item\" und endet mit der Dateiendung ".ddj").
Mein problem:
Wenn ich das google "Text-Formatierung in C#" - alles, was ich bekommen ist, wie eine Textdatei öffnen und zum schreiben einer text-Datei in C#.Ich weiß nicht, wie die Suche nach text in eine text-Datei.Auch kann ich nicht nach dem ersten integer,da bei Ihr eine kleine ganze Zahl wie in den drei Zeilen, die ich oben gepostet,ich werde nicht in der Lage zu finden, die Region,weil zum Beispiel "1" vielleicht gibt es in einem anderen Ort.
Meine Frage:
Wäre es das beste, Wenn ich ein Programm schreiben, das würde nichts löschen,aber das, was ich brauche.
Den anderen Weg, in meinem Kopf ist die direkte Suche innerhalb der Datei,aber wie ich oben erwähnt - ich vielleicht die falsche Position des zweiten integer, wenn seine Brust.
Bitte etwas vorschlagen,ich kann nicht formatieren, alles per hand.
InformationsquelleAutor der Frage Ivan Prodanov | 2009-05-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK, hier ist was wir tun: öffnen Sie die Datei, Lesen Sie es Zeile für Zeile, und teilen Sie es durch die Registerkarten. Dann schnappen wir uns den zweiten integer-und-Schleife durch den rest, den Weg zu finden.
InformationsquelleAutor der Antwort Samir Talwar
Andere Lösung, dieser Zeit, die Verwendung von regulären Ausdrücken:
Diesem Ausdruck ist ein wenig Komplex, so ist es hier aufgeschlüsselt:
InformationsquelleAutor der Antwort Samir Talwar
Könnte man etwas machen wie:
Den Grund, warum Sie nicht relevant finden Ergebnis bei der Suche nach 'Formatierung' ist, dass der Vorgang, den Sie ausführen wird aufgerufen, 'analysieren'.
InformationsquelleAutor der Antwort erikkallen
Wie es bereits erwähnt, würde ich empfehlen, mit den regulären Ausdruck (in-System.Text) zu bekommen, diese Art von job zu erledigen.
In combo mit einem soliden Werkzeug wie RegexBuddy, die Sie suchen, auf die Behandlung von komplexen text-Datensatz analysieren Situationen, sowie erste Ergebnisse schnell. Das tool macht es wirklich einfach.
Hoffe, das hilft.
InformationsquelleAutor der Antwort Vin
Versuchen regulären Ausdrücken. Finden Sie ein bestimmtes Muster in Ihrem text und ersetzen Sie es mit etwas, was Sie wollen. Ich kann Ihnen nicht den genauen code jetzt, aber Sie können testen Sie Ihre Ausdrücke mit diesem.
http://www.radsoftware.com.au/regexdesigner/
InformationsquelleAutor der Antwort Marc Vitalis
Könnte man die Datei öffnen und verwenden StreamReader.ReadLine zum Lesen der Datei in line-by-line. Dann können Sie die Verwendung von String.Split zu brechen jede Zeile in Stücke (verwenden Sie ein \t Trennzeichen) zum extrahieren der zweiten Reihe.
Als die Anzahl der Elemente ist anders, Sie würden suchen, die den string für das pattern '\*.ddj'.
Um ein Element zu löschen könnten Sie (zum Beispiel), halten den ganzen Inhalt der Datei im Speicher und schreibt eine neue Datei, wenn der Benutzer auf 'Speichern'.
InformationsquelleAutor der Antwort Justin Ethier
Ist eine Möglichkeit, die ich gefunden habe, wirklich nützlich in Situationen wie dieser ist, zu gehen, old-school und Verwendung des Jet OLE DB-provider, zusammen mit einem schema.ini-Datei zu Lesen, große tab-getrennte Dateien in Verwendung ADO.Net. Natürlich, diese Methode ist wirklich nur sinnvoll, wenn Sie wissen, das format der Datei, die importiert werden.
Sobald Sie die Daten in einem netten format wie eine datatable, das herausfiltern der Daten, die Sie benötigen, wird ziemlich trivial.
InformationsquelleAutor der Antwort Mark Green