Ersetzen, die ein bestimmtes Wort in einer Textdatei
Ich weiß, das wurde ein paar mal nachgefragt, aber ich habe gesehen, dass viele regex etc., und ich bin sicher, es ist ein weiterer Weg, dies zu tun mit nur ein stream-reader/writer. Unten ist mein code. Ich bin versucht zu ersetzen "Tee" mit dem Wort "Kohl". Kann jemand helfen? Ich glaube ich habe die falsche syntax.
namespace Week_9_Exer_4
{
class TextImportEdit
{
public void EditorialControl()
{
string fileName;
string lineReadFromFile;
Console.WriteLine("");
//Ask for the name of the file to be read
Console.Write("Which file do you wish to read? ");
fileName = Console.ReadLine();
Console.WriteLine("");
//Open the file for reading
StreamReader fileReader = new StreamReader("C:\\Users\\Greg\\Desktop\\Programming Files\\story.txt");
//Read the lines from the file and display them
//until a null is returned (indicating end of file)
lineReadFromFile = fileReader.ReadLine();
Console.WriteLine("Please enter the word you wish to edit out: ");
string editWord = Console.ReadLine();
while (lineReadFromFile != null)
{
Console.WriteLine(lineReadFromFile);
lineReadFromFile = fileReader.ReadLine();
}
String text = File.ReadAllText("C:\\Users\\Greg\\Desktop\\Programming Files\\story.txt");
fileReader.Close();
StreamWriter fileWriter = new StreamWriter("C:\\Users\\Greg\\Desktop\\Programming Files\\story.txt", false);
string newText = text.Replace("tea", "cabbage");
fileWriter.WriteLine(newText);
fileWriter.Close();
}
}
}
- "Kann jemand helfen ich glaube ich habe die falsche syntax" - ist das nicht eine echte Frage.
- Was Fehler " Fehlermeldung erhalten Sie?
- Auch, nur 3 Zeilen hier egal, ReadAllText, ersetzen, & schreiben fileWriter. (mit Bezug auf Tee und Kohl)
- Was ist das problem genau? Haben Sie versucht, die Einstellung auf einen Haltepunkt
string newText = ...
um zu sehen, ob es wird immer zugewiesen, der richtige Wert? - ich bekomme kein Fehler, es funktioniert einfach nicht, ersetzen Sie das Wort " Tee mit dem Wort Kohl in meiner txt-Datei, bin ich einfach etwas falsch? was soll ich forschen, um dies zu korrigieren?
- Ich habe es noch nicht getestet, aber ich denke, Sie können einfach zu Entsorgen() der fileWriter. Dieses tutorial sagt, dass es nicht viel einstellen, bis zu StreamWriter. dotnetperls.com/streamwriter
- Beachten Sie, dass
string.Replace()
ist case-sensitive. Versuchen Sie so etwas wienewText = Regex.Replace(text, "tea", "cabbage", RegexOptions.Compiled | RegexOptions.IgnoreCase);
- danke alle für Ihre Antworten, werde ich einen go zu lösen, aber ich kann, und lassen Sie Sie wissen, was mein problem, danke:)
- okay, so hatte ich dieses : string fileName = @"C:\Users\Greg\Desktop\Programming Files\story.txt"; Datei.WriteAllText(Dateiname, Datei.ReadAllText(Dateiname).Ersetzen("Tee", "Kohl")); und ersetzen die Worte, aber ich bin immer eine IOException, ich verstehe, dass man Sie fangen kann, eine Ausnahme? Aber nicht diese schlechte Praxis?
- Stellen Sie sicher, dass Sie nicht die Datei in einem Texteditor geöffnet und während der Ausführung Ihres Codes.
- Hallo cory , ich habe nicht die Datei zu öffnen, werde ich versuchen den zweiten Weg, den Sie vorgeschlagen haben, scheint es viel besser/schneller. und ist viel mehr Benutzer freundlich zu verstehen, den Prozess. danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn dir egal, über die memory Auslastung:
Wenn Sie ein multi-line-Datei, die nicht zufällig split Wörter am Ende der Zeile, könnte man z.B. ändern einer Zeile in einer Zeit, in der ein mehr-Speicher-freundliche Weise:
Am Ende habe ich diese verwendet : Hoffe, es kann anderen helfen
}