Frage

Wenn Sie String.Replace () verwenden Test 50mal zu ersetzen, haben Sie im Wesentlichen eine neue Zeichenfolge 50 Mal erstellen. Hat StringBuilder.Replace () tun dies effizienter? Z. B. sollte ich eine String wenn ich eine Menge Text zu ersetzen werde, auch wenn ich keine Daten an sie angehängt werden?

Ich bin mit .NET, aber ich nehme an, das die gleich wie Java wäre und möglicherweise auch andere Sprachen.

War es hilfreich?

Lösung

Dieses

ist genau die Art von Sache für Stringbuilder sind - wiederholte Änderung des gleichen Textobjekts - es ist nicht nur für die wiederholte Verkettung, aber das scheint zu sein, was es für am häufigsten verwendet wird

.

Andere Tipps

Es hängt davon ab, ob die Größe des Ersatzes größer als die Zeichenfolge ersetzt.

Der String über ordnet seinen Puffer , während ein String immer nur hält wie immer viele Zeichen in ihm sind.

Die StringBuilder.Capacity Eigenschaft ist, wie viele Zeichen wird der Puffer halten, während StringBuilder.Length, wie viele Zeichen in Gebrauch sind.

Normalerweise sollten Sie StringBuilder.Capacity auf einen Wert größer als die erwartete resultierende Zeichenfolge festgelegt. Andernfalls muß das String seinen Puffer neu zuzuordnen. Wenn die String seinen Puffer neu zuweist, es verdoppelt es in der Größe , was bedeutet, nach ein paar wahrscheinlich es ist neu zuweist deutlich größer als es durch Standardkapazität bei 16 beginnt sein, muss.

, um den Kapazitätswert Durch die Einstellung, wenn Sie (im Konstruktor zum Beispiel) starten Sie die Umschichtungen des Puffers des String speichern. Sie können StringBuilder.MaxCapacity verwenden, um maximale Kapazität zu begrenzen, dass ein Stringbuilder erweitert werden kann.

Ja, es ist. String.Replace immer schafft eine neue Zeichenfolge -. StringBuilder.Replace nicht

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top