אכן בפונקציה Replace נעשה שימוש בפונקציות חיצוניות שכתובות כנראה בC++.
http://referencesource.microsoft.com/#mscorlib/system/string.cs,87056d499ccd3166
במקרה שלך תשתמש בRegex.Replace.
הדרך הפשוטה היא לספור בנפרד ולהחליף בנפרד:
var str = "some text text text ble ble text";
var count = Regex.Matches(str, "text").Count;
var result = Regex.Replace(str, "text", "newtext");
אבל זה נחשב פחות יעיל, עדיף באותו סירקה עבור ההחלפה לספור ולכן בשביל לא להסתבך להשתמש עם Replace שמקבל בכל איטרציה פונקציה שמורה לו במה להחליף ומהלכה ניתן למנות את הפעמים:
int count = 0;
var result2 = Regex.Replace(str, "text", (m) =>
{
count++;
return "newtext";
});
אגב בReplace של Regex יש אופציה לפרמטר מספרי שמגביל את מספר ההחלפות:
var result = new Regex("text").Replace(str, "newtext", 3);
פורסם במקור בפורום CODE613 ב19/05/2016 12:51 (+03:00)