Estoy escribiendo los contenidos de un archivo de texto en un StringBuilder y luego quiero realizar una serie de acciones de búsqueda/reemplazo en el texto contenido en el StringBuilder utilizando expresiones regulares.Reemplazos de Regex dentro de un StringBuilder
He tenido un problema ya que la función de reemplazo de StringBuilder no es capaz de aceptar argumentos de expresiones regulares.
Podría usar Regex.Replace en una cadena normal, pero estoy bajo la impresión de que esto es ineficaz debido al hecho de que se necesitarán crear dos copias de la cadena en la memoria ya que las cadenas .net son inmutables.
Una vez que haya actualizado el texto, pienso volver a escribirlo en el archivo original.
¿Cuál es la mejor y más eficiente manera de resolver mi problema?
EDITAR
Además de la respuesta (s) a continuación, he encontrado las siguientes preguntas que también arrojar alguna luz sobre mi problema -
- 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
Estoy sorprendido de que no haya pensado en esto: en realidad ejecutarlo y verlo, en lugar de especular sobre cuál sería la velocidad. He borrado mi respuesta especulativa en consecuencia. – Timwi
Si el Regex.Replace fue lo suficientemente rápido, ¿debería preocuparle en absoluto la gestión de la memoria? ¿Estoy analizando/optimizando las cosas al preocuparme por el exceso de memoria en la creación de múltiples cadenas? – ipr101
Esto no es tanto una respuesta como una sugerencia. La pregunta es cómo hacer que Regex funcione con stringbuilder, y la respuesta es que no son compatibles a menos que usted escriba su propia implementación. Por qué este es el caso, no lo sé – Slight