Comment lire un personnage dans un fichier 1 par 1 c #

Je veux que mon programme lise un fichier texte contenant tous les caractères 1 par 1 et, partout où il trouve une virgule inversée (“), il ajoute un point-virgule avant cette virgule inversée. Par exemple, nous avons un paragraphe dans un fichier texte comme suit:

Ceci est un paragraphe qui contient beaucoup, beaucoup de caractères et quelques noms et dates. Mon nom “Sam” je suis né à “12:00” “midi”. Je vis à “n’importe où”.

Maintenant, je veux que la sortie soit comme suit:

Ceci est un paragraphe qui contient beaucoup, beaucoup de caractères et quelques noms et dates. Mon nom, “Sam”; je suis né à “12:00″; ;”le midi;”. Je vis dans “n’importe où”; .

Il devrait ouvrir le fichier en utilisant le stream de fichier, puis lire le caractère, puis append un point-virgule où il trouve un comman inversé. Et le résultat devrait être égal à textbox1.text.

CODE JUSQU’A FAIT: –

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace ConsoleApplication1 { class Program { static void Main(ssortingng[] args) { char ch; int Tchar = 0; StreamReader reader; reader = new StreamReader(@"C:\Users\user1\Documents\data.txt"); do { ch = (char)reader.Read(); Console.Write(ch); if (Convert.ToInt32(ch) == 34) { Console.Write(@";"); } Tchar++; } while (!reader.EndOfStream); reader.Close(); reader.Dispose(); Console.WriteLine(" "); Console.WriteLine(Tchar.ToSsortingng() + " characters"); Console.ReadLine(); } } } 

SORTIE:-

Ceci est un paragraphe qui contient beaucoup, beaucoup de caractères et quelques noms et dates. Mon nom “; Sam”; je suis né à “; 12: 00”; “;le midi”;. Je vis dans “; n’importe où”; . 154 caractères

Je veux ce point-virgule avant la virgule inversée. Toute aide serait appréciée. Merci

Échangez l’ordre des opérations:

  if (Convert.ToInt32(ch) == 34) { Console.Write(@";"); } Console.Write(ch); 

Par exemple, n’écrivez pas le caractère original avant APRÈS que vous ayez décidé de générer un point-virgule ou non.

Essayez ch = (char)reader.Peek();

Cela vous indiquera le prochain caractère sans le lire. Vous pouvez ensuite l’utiliser pour vérifier s’il s’agit d’un “ou non d’une insertion: en conséquence

 if (Convert.ToInt32((char)read.Peek()) == 34) Console.Write(@";") 

Devez-vous lire caractère par caractère? Le code suivant fera le tout en bloc et vous retournera une liste contenant toutes vos lignes.

 var contents = File.ReadAllLines (@"C:\Users\user1\Documents\data.txt") .Select (l => l.Replace ("\"", ";\""));