Ich schreibe den Inhalt einer Textdatei in einen StringBuilder und ich möchte dann eine Reihe von Suchen/Ersetzen Aktionen auf den Text im StringBuilder mit regulären Ausdrücken durchführen.Regex Ersetzungen in einem StringBuilder
Ich habe ein Problem festgestellt, wie die StringBuilder Replace-Funktion keine Argumente für reguläre Ausdrücke akzeptieren kann.
Ich könnte Regex.Replace auf einer normalen Zeichenfolge verwenden, aber ich habe den Eindruck, dass dies ineffizient ist aufgrund der Tatsache, dass zwei Kopien der Zeichenfolge im Speicher erstellt werden müssen, da .net Zeichenfolgen unveränderlich sind.
Sobald ich den Text aktualisiert habe, plane ich, es wieder in die ursprüngliche Datei zu schreiben.
Was ist der beste und effizienteste Weg, um mein Problem zu lösen?
EDIT
Neben der Antwort (en) unten, habe ich folgende Fragen gefunden, die auch etwas Licht auf meinem Problem Schuppen -
- memory-efficiency-and-performance-of-string-replace-net-framework
- is-stringbuilder-replace-more-efficient-than-string-replace
- at-what-point-does-using-a-stringbuilder-become-insignificant-or-an-overhead
Ich bin erstaunt, dass ich nicht darüber nachgedacht habe: tatsächlich laufen und sehen, anstatt darüber zu spekulieren, was die Geschwindigkeit wäre. Ich habe meine spekulative Antwort entsprechend gelöscht. – Timwi
Wenn der Regex.Replace schnell genug war, sollte ich mich überhaupt um die Speicherverwaltung kümmern? Bin ich damit beschäftigt, Dinge zu analysieren/zu optimieren, indem ich mir Gedanken über die Speicherkapazität von mehreren Strings mache? – ipr101
Dies ist keine Antwort so viel wie ein Vorschlag. Die Frage ist, wie Regex mit stringbuilder funktioniert, und die Antwort ist, dass sie nicht kompatibel sind, wenn Sie nicht Ihre eigene Implementierung schreiben. Warum das der Fall ist, weiß ich nicht. – Slight