Wie bekomme ich eine bestimmte Zeile von einem String in C #?

8

Ich habe eine Zeichenfolge in C # und möchte Text von einer bestimmten Zeile erhalten, sagen wir 65. Und wenn die Datei nicht so viele Zeilen hat, würde ich gerne "" bekommen. Wie geht das?

    
Tomasz Smykowski 09.04.2010, 09:43
quelle

7 Antworten

18

Schnell und einfach, vorausgesetzt, \ r \ n oder \ n ist Ihre Newline-Sequenz

%Vor%     
EventHorizon 09.04.2010, 09:50
quelle
6
%Vor%     
Paul Ruane 09.04.2010 09:55
quelle
4

Sie könnten System.IO.StringReader über Ihre Zeichenfolge verwenden. Dann könnten Sie ReadLine() verwenden, bis Sie die gewünschte Zeile erreicht haben oder keinen String mehr haben.

Da alle Zeilen eine unterschiedliche Länge haben können, gibt es keine Verknüpfung, um direkt zu Zeile 65 zu springen.

Wenn du Split() eine Zeichenkette duplizierst, verdoppelt sich auch der Speicherverbrauch.

    
Hans Kesting 09.04.2010 09:51
quelle
2

Wenn Sie bereits eine String-Instanz haben, können Sie mit String.Split jede Zeile aufteilen und prüfen, ob Zeile 65 verfügbar ist. Wenn ja, verwenden Sie sie.

Wenn der Inhalt in einer Datei ist, verwenden Sie File.ReadAllLines , um ein Zeichenfolgen-Array zu erhalten, und führen Sie dann die gleiche Überprüfung durch, die zuvor erwähnt wurde. Dies funktioniert gut für kleine Dateien, wenn Ihre Datei groß ist, lesen Sie jeweils eine Zeile.

%Vor%     
João Angelo 09.04.2010 09:49
quelle
2

Sie können die Zeichenfolge basierend auf dem Zeilenumbruchzeichen aufteilen.

%Vor%     
KhanS 09.04.2010 09:52
quelle
0

Abgesehen von der Tatsache, dass ich eine bestimmte Dateistruktur und Dateioperationen auf niedrigerer Ebene ausnutze, glaube ich nicht, dass es schneller geht, als 64 Zeilen zu lesen, zu verwerfen und dann die 65. Zeile zu lesen und zu behalten. Bei jedem Schritt können Sie leicht überprüfen, ob Sie die gesamte Datei gelesen haben.

    
IVlad 09.04.2010 09:49
quelle
0

theString. Teilen ("\ n" .ToCharArray ()) [64]

    
AlexanderMP 09.04.2010 09:52
quelle

Tags und Links