2017-07-13 1 views
0

Ich habe eine Bedingung, dass Programm liest Zeilen aus einer Datei 'assign.txt' und dann Daten aus den letzten 6 Unterstreichungen und schreibt dann diese Daten in eine andere Datei line.txt.Wie zu vermeiden, dass die gleiche Zeile mehrere Male in c hinzufügen #

Aber bevor Daten zu line.txt Schreiben muss ich prüfen, ob die Daten, die bereits in line.txt liegt vor, wenn ja dann die vorhandenen Daten überspringen oder ersetzen, sondern die jeweils Daten in line.txt sollte die Datei assign.txt können enthalten mehrere Zeilen

foreach (string fileLine in File.ReadAllLines("F:\\assign.txt")) 
{ 
    string tel_in = "TELENOR_BTS_INCOMING"; 

    string telenor = fileLine.ToUpper(); 

    var delimeter = "_"; 
    if (telenor.Contains(tel_in)) 
    { 
     var lineParts = fileLine.Split(new[] { delimeter }, StringSplitOptions.None); 
     if (lineParts.Length > 1) lineParts = lineParts.Skip(1).ToArray(); 
     var data = string.Join(delimeter, lineParts.Skip(lineParts.Length - 7)); 

     lineData.Add(data); 

     File.WriteAllLines(@"C:\Users\Adnan Haider\Desktop\line.txt", lineData); 
    } 
    else 
    { 
     var lineParts = fileLine.Split(new[] { delimeter }, StringSplitOptions.None); 
     if (lineParts.Length > 1) lineParts = lineParts.Skip(1).ToArray(); 
     var data = string.Join(delimeter, lineParts.Skip(lineParts.Length - 6)); 

     lineData.Add(data); 

     File.WriteAllLines(@"C:\Users\Adnan Haider\Desktop\line.txt", lineData); 
    } 
} 
eindeutig sein

dies line.txt Probe Ausgabedatei

Mobilink_User_dpo_bahawalpur_0506768768685465367658717_1205 42.out Telenor_bts_outgoing_dpo_chakwal_030617_15201696981.out Telenor_bts_outgoing_dpo_chakwal_030617_15201696981.out Telenor_bts_incoming_dpo_chakwal_030617_15201696981.out Telenor_bts_incoming_dpo_chakwal_030617_15201696981.out Ufone_User_dpo_chakwal_030617_15235869694.out

dies assign.txt Probe

dpo.chakwal63201732033PM_FL_Telenor_bts_outgoing_dpo_chakwal _030617_15201696981. aus d po.chakwal63201732033PM_FL_Telenor_bts_outgoing_dpo_chakwal _030617_15201696981. aus

oberen Linien sind Ausgangsabtastwerte line.txt Proben und unteren Linien sind Eingangsleitungen assign.txt wollen i Ausgang in line.txt schreiben, aber zuerst muss ich überprüfen, ob die Daten, die bereits in line.txt bestanden, wenn ja, dann überspringe oder ersetze die Ausgabe mit dieser existierenden Zeile sonst schreibe Daten in line.txt

+0

Können Sie ein Beispiel der Eingabe posten? Es ist nicht ganz klar aus deiner Beschreibung oder deinem geposteten Code, was du versuchst zu tun. – Tim

+0

Was hast du selbst versucht? Und können Sie einige Beispiele für die 'assign.txt' und' line.txt' geben, damit wir sehen können, was Sie versuchen zu tun. –

+1

@Tim Lol gleiche Antwort –

Antwort

-1

Es gibt verschiedene Ansätze zu Loops. Dies ist die eine, die ich vorschlagen würde. Nein Versuch/Catch noch Verwendung() {}, aber Sie bekommen die Idee.

string[] m_fileLine = File.ReadAllLines(@"F:\\assign.txt"); 
StreamWriter m_results = new StreamWriter(@"F:\\results.txt", true); 

string tel_in = "TELENOR_BTS_INCOMING"; 

for (int i = 0; i < m_fileLine.Length; i++) 
{ 
    if (m_fileLine[i].ToUpper().Contains(tel_in)) 
    { 
    // some logic here... 
    // then write here... 
    m_results.WriteLine(m_fileLine[i].ToString()); 
    m_results.Flush(); 
    } 
    else 
    { 
    // else logic and write here... 
    } 

} 
Verwandte Themen