2016-05-15 12 views
0

Ich benutze C# stringBuilder, um Zeichenfolge mit der besten Leistung zu ersetzen, die Ersetzung wird nie beendet, ohne den Benutzer zu informieren, wie viele Ersetzungen vorgenommen wurden, aber die Replace() -Methode gibt nur die stringBuilder-Instanz zurück, die ich auch nicht finden kann Jede Methode in stringBuilder hilft, die Ersetzungen zu zählen.Stringbuilder replacement() - Zählen, wie viele Ersetzungen gemacht wurden?

So gibt es sowieso, um herauszufinden, wie viele Ersetzungen gemacht wurden? Vielen Dank für das Lesen :)

Antwort

1

Führen Sie einfach eine Zählung für die Zeichenfolge durch, bevor Sie die Ersetzung ausführen. Sie müssten Ihre eigene Erweiterungsmethode oder LINQ-Abfrage einführen.

Beispiel Erweiterungsmethode:

public static int OccurencesOf(this string str, string val) 
{ 
int num_occurrences = 0; 
int num_startingIndex = 0; 

while ((num_startingIndex = str.IndexOf(val, num_startingIndex)) >= 0) 
{ 
    ++num_occurrences; 
    ++num_startingIndex; 
} 

return num_occurrences; 
} 
+0

Ist es die String Mühe verschwenden? Ich meine, der StringBuilder wurde gemacht, um die Zeit zu reduzieren, die das String-Objekt gemacht werden muss, wenn ich dies verwende, muss ich String-OBJ machen, das unveränderlich ist. – 123iamking

+1

Es gibt keine Möglichkeit, mit reinem Zeichenfolgengenerator das zu tun, was Sie wollen. Es wird also ineffizient sein, ja. –

+0

Ich denke, ich werde erforschen, wie StringBuilder gemacht wurde und fügen Sie die Funktion Zähler ersetzen, denkst du, dass es möglich ist? – 123iamking