Entwickler-Ecke
Basistechnologien - string in geöffnetem notepad++ suchen
schubi - Di 08.10.13 09:34
Titel: string in geöffnetem notepad++ suchen
Heyy,
ich bin mir zwar sehr sehr sicher, dass es zu diesem Thema bestimmt schon eine Antwort gibt. Aber ich habe nun knapp eine Woche verbracht um eine Lösung zu finden, leider erfolglos. Vielleicht suche ich einfach nach den falschen Stichwörtern.
Also zu meinem Problem:
Ich will eine Datei mit Notepad++ öffnen. Dort einen String suchen und diesen dann variabel anpassen und abspeichern.
Bis zum Öffnen der Datei bin ich gekommen, aber ich verzweifel an der Suche nach dem String:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| namespace WindowsFormsApplication1 { public partial class Form23 : Form { Process notepad = new Process(); public Form23() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { notepad.StartInfo.FileName = @"C:\Programme\Notepad++\notepad++.exe"; notepad.StartInfo.Arguments = "C:\\Programme\\*"; notepad.Start(); } } } |
Wie gesagt soweit funktioniert es. Ich finde leider auch nichts in Systems.Diagnostics. :?
Wäre super, wenn mir jemand helfen könnte.
Gruß
Moderiert von
Th69: C#-Tags hinzugefügt
Th69 - Di 08.10.13 10:11
Hallo und :welcome:
wenn es dir nur darum geht eine Textdatei zu verändern, dann brauchst du den Umweg über ein externes Programm nicht zu gehen (oder benötigst du zwingend eine bestimmte Suchoption von Notepad++?).
Der einfachere Weg wäre, die Textdatei mittels
File.ReadAllLines einzulesen, dort dann in jeder Zeile nach dem zu verändernden Wort suchen (
String.IndexOf), dann die einzelne Zeile abzuändern und zuletzt die gesamte Datei wieder mit
File.WriteAllLines zu speichern.
(Nichts anderes macht Notepad++ intern auch, nur daß es meines Wissens nach in C++ programmiert ist)
Bei der MSDN gibt es genügend Beispiele zum Lesen und Schreiben von Dateien, z.B.
Gewusst wie: Lesen aus einer Textdatei [
http://msdn.microsoft.com/de-de/library/vstudio/ezwyzy7b.aspx].
P.S. C#-Code bitte immer in C#-Tags (unter "Bereiche") hier im Forum setzen, danke.
schubi - Di 08.10.13 10:29
Huch das ging flott.
Ja die Variante hatte ich mir auch schon angeschaut, finde ich prinzipiell auch super und hätte ich echt gerne genommen. Aber leider ist das keine Textdatei. Bedeutet,wenn ich die Datei über diese Methode einlese und danach über File.WriteAllLines ausgebe, dann stimmt nichts mehr.
Die einzige Möglichkeit die ich bis jetzt gefunden habe ist eben mit notepad++. Deswegen auch die Frage nach einer Lösung mit genau dem Programm.
P.S. Ich versuche in Zukunft C#-Tags zu verwenden. Sieht deutlich besser aus.
schubi - Di 08.10.13 12:00
Für alle die es via Notpad++ probieren möchten:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| notepad.StartInfo.FileName = @"C:\Programme\Notepad++\notepad++.exe"; notepad.StartInfo.Arguments = "mydocumentpath"; notepad.Start(); SendKeys.SendWait("^f"); SendKeys.SendWait("string before the string you want to change"); SendKeys.SendWait("{ENTER}"); SendKeys.SendWait("{ESC}"); SendKeys.SendWait("{RIGHT}"); string x; while (x != "") { SendKeys.SendWait("+{RIGHT}"); SendKeys.SendWait("^c"); SendKeys.SendWait ("1"); string x = } |
Ich habe mir deinen Rat noch einmal ans Herz genommen, da das oben geschriebene eher unschön ist:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| byte[] text = System.IO.File.ReadAllBytes(@"mydocumentpath"); for (int count = 0; count < text.Length; count++) { if ( text[count++] == "your bytes"&& text[count++] == "your bytes"...) { while (text[count] != "" ) text[count++] = "1"; } } System.IO.File.WriteAllBytes(@"mydocumentpath", text); |
Edit: Kann geschlossen werden.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!