2013-06-03 1 views
-2

J'ai vu beaucoup de messages ici, mais tous disent comment lire un fichier texte ligne par ligne .. mais je ne veux pas ligne par ligne, je veux lire un champ de ligne par champ.Comment lire un champ particulier de la ligne de fichier texte séparés par des virgules en utilisant C#

Exemple de mon fichier texte suit

acceptées, 22/02/2013, 20:12, ss123, 1234,1234,1234, Échec * Une certaine raison, 20500
Rejeté, 22/02/2013 , 20h12, ss123, 1234,1234,1234, Échec * Une certaine raison, 20500

fichier texte de sortie comme je veux:

acceptées, 22/02/2013, 20:12, ss123, 1234, 1234,1234, Accepté, 20,500

Rejeté, 2013/02/22, 20:12, ss123, 123 Dans l'exemple ci-dessus out, je dois d'abord vérifier si la ligne contient Acceptée ou non, si elle contient Accepté, puis j'ai besoin de remplacer 8e colonne (Échec * Une raison) avec Accepté sinon j'ai besoin d'écrire seulement la raison dans la 8e colonne (une raison) pourquoi il est rejeté .. merci d'avance si vous pouviez résoudre mon problème ...

Je pense fais comme code suivant..anybuddy plz aidez-moi .. entrez le code ici

try 

{ 

System.IO.TextReader ReadFile = new StreamReader("c:\\ATMLOG.txt"); 

System.IO.TextWriter writeFile = new StreamWriter("c:\\DeatailReport.txt"); 

string line = ReadFile.ReadLine() 

while(line!=null) 
{ 

if(line.contains("Accepted") 
{ 

string[] strArr = line.Split(','); 
strArr[8]="Accepted";//i wanted to replace 8th column of comma separated text file line with Accepted 
TextWrite.writeln(line); 
} 
else 

{ 

switch(strArr[8]) 
{ 
case "some reasson" : //which reason will be mached that should be write on 8th column of comma separated text file 

case "some reasson": 

; 
; 
; 



} 

      } 
      catch (IOException ex) 
      { 
       MessageBox.Show(ex.ToString()); 
      } 
+0

Le code suivant ne fonctionne pas: – DotNetShabbeer

Répondre

2

vous pouvez obtenir un tableau de champs avec String.Split()

string[] strArr = myStr.Split(','); 
+0

string Status = strArr [7]; // il n'attribue pas de valeur de chaîne à l'état. – DotNetShabbeer

+0

@ user2448680 Avez-vous un exemple de code que je peux copier et coller pour pouvoir l'exécuter dans un débogueur? –

+0

ouais j'ai un certain code que je vais télécharger .. merci pour la réponse :) – DotNetShabbeer

2

Je ne prendrais même pas la peine d'effectuer le fractionnement. Comme il semble que tout est Failed*Some Reason et vous devez simplement Failed* à disparaître, j'effectue une remplacerons:

line = line.Replace("Failed*", ""); 

Pour le rendre vous pouvez légèrement plus efficace encore vérifier Accepted.

if (!line.Contains("Accepted")) 
{ 
    line = line.Replace("Failed*", ""); 
} 
+0

je voulais remplacer "Failed * Some reason" par Accepted mais la raison est toujours différente .. – DotNetShabbeer

+0

Cela ne correspond pas vraiment ce que vous avez décrit dans votre question sous le texte de sortie. Votre exemple indique que vous voulez simplement que 'Failed *' disparaisse. Peut-être que si vous développez un peu plus sur les divers résultats attendus qui ne seraient pas atteints par cette réponse, je vais regarder les lacunes de la réponse un peu plus près. –

+0

En fait, j'essaie de lire un fichier journal ATM qui est généré automatiquement et en essayant de filtrer ce fichier journal et de produire un fichier texte de rapport détaillé. qui aura accepté ou refusé des détails de vérification. Les chèques rejetés ayant la raison pour laquelle ils sont rejetés et cette raison que j'avais l'habitude de comparer avec mes raisons prédéfinies si elles correspondaient alors j'ai utilisé écrire cette raison sur ce champ. – DotNetShabbeer

Questions connexes