פונקציה Replase קבלת מספר ההחלפות
-
אני משתמש בפונקציה Replase של המחלקה string וחוץ מהסטרינג שהיא מחזירה אני רוצה לדעת גם כמה פעמים הפונקציה הצליחה לבצע החלפה במחרוזת
string str = "hello world hello world hello world"; string find = "world", replacement="goodbye"; str = str.Replace(find, replacement);איך אפשר לממש את זה?
@דוד ל.ט.
להשתמש במתודה מובנית במקום מימוש עצמי זה חובה ברוב המקרים...
אם מעניין אותך הנה קוד המקור של string.Concatהאם גם לזה יש פונקציה מובנית?
ניסיתי להגיע לקוד המקור ואולי להעתיק אותו אלי ובלולאה שכנראה נמצאת שם לשתול מונה על ההחלפות
אבל לא מצאתי את הפונקציה הזאת בקישור שצירפתפורסם במקור בפורום CODE613 ב19/05/2016 11:54 (+03:00)
-
אכן בפונקציה 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)