2017-02-10 4 views
-1

Angenommen, ich eine Zeichenfolge haben, wie folgt:Wie hole ich alle Wörter nach der ersten Zeilenumbruch?

User. 
This is first line after line break. 
This is second line after line break. 
//Blank Line 
This is fourth line. 

Wie kann ich alle Wörter holen, die nach der ersten Zeilenumbruch erscheinen. Also in obigem Fall möchte ich abzurufen:

This is first line after line break. 
This is second line after line break. 
//Blank Line 
This is fourth line. 

das heißt alles, was nach der nächsten Zeile des ‚User‘ kommt.

Also im Grunde wird die Zeichenfolge folgende Komponenten enthält:

User\r\n\r\nThis is first line after line break. //and so on 

Ich mache das zur Zeit folgenden:

  // consider demoString is the string variable which holds the entire string mentioned above 

commentStringToSearch = "User"; 
commentStringIndex = demoString.IndexOf(commentStringToSearch, StringComparison.OrdinalIgnoreCase);     

if (commentStringIndex != -1) 
{ 
      commentValue = demoString.Substring(commentStringIndex + commentStringToSearch.Length);   
} 

Aber das Problem mit diesem Code ist, dass es etwas nach dem holen würde Wort 'Benutzer' einschließlich Leerzeichen in der ersten Zeile.

Meine erwartete Ausgabe ist, Wörter aus der zweiten Zeile zu bekommen, was immer die letzte Zeile ist.

Gemäß obigen Beispiel meine erwartete Ausgabe ist folgendes zu erhalten:

This is first line after line break. 
This is second line after line break. 
//Blank Line 
This is fourth line. 

(Ignorieren alles von der ersten Linie und etwas von der zweiten Linie ab akzeptieren)

Vielen Dank im Voraus.

+1

Split auf Environment.NewLine zu validieren. Jetzt hast du alle Zeilen. Gehen Sie wie erforderlich vor. – Will

+0

Nachdem Sie den Index von "Benutzer" erhalten haben, finden Sie den Index der ersten neuen Zeile nach diesem Index. – juharr

+0

@stuartd Sie sollten das als eine Antwort geben. – Fildor

Antwort

2

Es gibt einen einfachen Weg, dies zu tun:

var newText = text.Substring(text.IndexOf(Environment.NewLine) + Environment.NewLine.Length); 
+0

Ich möchte nur für OP hinzufügen: Natürlich musst du deine Eingabe vorher überprüfen: Nicht null, Nicht leer, enthält mindestens einen Zeilenumbruch ... – Fildor

0

@ der stuartd Antwort mein Problem gelöst mit einer kleinen Änderung wie folgt:

var newText = text.Substring(text.IndexOf(Environment.NewLine) + Environment.NewLine.Length +2); 

Der Grund 2 für das Hinzufügen ist, weil mit @ stuartd's Lösung Die Stringvariable enthält den folgenden Wert:

\r\nThis is first line after line break. //and so on 

Da es eine unerwünschte \ r \ n gibt, die von der ursprünglichen Zeichenkette übernommen wird, muss 2 hinzugefügt werden, damit die Teilzeichenfolge sie überspringt, sonst würde am Anfang des Werts ein unnötiges Leerzeichen hinzugefügt .

Und als @Fildor Recht darauf hingewiesen, es ist notwendig, um die Zeichenfolge vor-Hand für NULL-Werte usw.

Verwandte Themen