2016-04-30 8 views
0

Ich brauche eine Hilfe, um die Zeile no einer Zeichenfolge, wo wir eine bestimmte Zeichenfolge gefunden. Beispiel: Ich habe Datei .txt mit dieser ZeichenfolgeC# char finden und die Zeile no des Ergebnisses

hallo

Dank ;;

bauen ;;;

aber ;;;;;

Ich möchte die Zeile Nein der ';' weniger als 3 Damit ich ;; bauen wie

hallo

dank Datei geschrieben werden, müssen die ‚\ n‘ und dass das Ergebnis entfernen ;;;

aber ;;;;;

Ich denke, ich bin klar plzz helfen mir aus. Eigentlich hatte ich versucht verschüttet, aber ich kann '\ n' nicht ersetzen und schreibe es zurück in die Datei. Es zeigt nur die Zeile Nr.

+0

Sind ';' immer am Ende der Linie? – dotctor

+0

Replace (new string [] {enviroment.newline}, ""); –

+0

Vielen Dank für Ihre Antwort für @doctor Nein eigentlich wie ich sagte Ich möchte das Nein der Vorkommen finden ich meine "wenn zählen (;) <3 dann" – Roshan

Antwort

0

Versuchen Sie folgendes:

var lines = new List<string>(); 
// read lines from file to lines list 

var stringBuilder = new StringBuilder(); 

foreach(var line in lines) 
{   
    stringBuilder.Append(line); 

    var semicolonCount = line.Count(x => x == ';'); //To Count the char 
    if(semicolonCount == 0 || semicolonCount > 2)  //To state the occurrence 
    { 
     stringBuilder.Append(Environment.NewLine); 
    } 
} 

var resultText = stringBuilder.ToString(); 
// write this into the file 
+0

Hallo @MaKCbIMKo danke für deine Antwort, aber es gibt ein Problem mit dem Code. in 'if' haben Sie line = line.Replace (System.Environment.NewLine, string.Empty) angegeben; aber es ist ein Fehler Fehler \t CS1656 \t zeigt „nicht auf‚Linie‘zuweisen, da es sich um eine‚foreach Iterationsvariable‘ist“ wenn ich entfernen Linie dann ist es die ganze Zeile aus der Datei bricht Entfernen – Roshan

+0

Nun ist die Fehler ist behoben, aber es ersetzt alle Zeilenumbrüche in der Datei. Es ersetzt diese einzelne Zeile nicht. – Roshan

+0

Wie wäre es jetzt? :) – MaKCbIMKo

0
string[] lines = theText.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); 
string[] resultLines = lines.Where(l => l.Contains(";;;")).ToArray(); 

Es ist auch möglich, diese Regular Expressions mit zu machen.

0

Try Regex:

string text = File.ReadAllText("test.txt"); 

string pattern = @"(?<!;)(;;)(?:\r\n)+"; 

string result = Regex.Replace(text, pattern, m => m.Groups[1].Value); 
Verwandte Themen