.net - example - stringbuilder to string
¿StringBuilder.Replace() es más eficiente que String.Replace? (3)
Si tiene que usar String.Replace () para reemplazar la prueba 50 veces, básicamente tiene que crear una nueva cadena 50 veces. ¿StringBuilder.Replace () hace esto de manera más eficiente? Por ejemplo, ¿debería usar un StringBuilder si voy a reemplazar una gran cantidad de texto, incluso cuando no le agregue ningún dato?
Estoy usando .NET, pero supongo que esto sería lo mismo que Java y posiblemente otros idiomas.
Este es exactamente el tipo de cosas para las que se sirve StringBuilder - modificación repetida del mismo objeto de texto - no es solo para la concatenación repetida, aunque parece ser lo que se usa con mayor frecuencia.
Sí lo es. String.Replace
siempre crea una nueva cadena - StringBuilder.Replace
no lo hace.
Depende si el tamaño del reemplazo es más grande que la cadena reemplazada.
El StringBuilder sobre asigna su búfer , mientras que una cadena solo contiene cuantos caracteres hay en él.
La propiedad StringBuilder.Capacity es la cantidad de caracteres que contendrá el búfer, mientras que StringBuilder.Length es cuántos caracteres están en uso.
Normalmente, debe establecer StringBuilder.Capacity en un valor mayor que la cadena resultante esperada. De lo contrario, StringBuilder necesitará reasignar su búfer. Cuando StringBuilder reasigna su búfer, lo duplica en tamaño , lo que significa que después de que un par lo reasigna, es probable que sea significativamente más grande de lo que necesita, por defecto la capacidad comienza en 16.
Al establecer el valor de Capacidad cuando comienzas (en el constructor, por ejemplo) guardas las reasignaciones del buffer de StringBuilder. Puede usar StringBuilder.MaxCapacity para limitar la capacidad máxima a la que se puede expandir un StringBuilder.