• דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

פונקציה Replase קבלת מספר ההחלפות

מתוזמן נעוץ נעול הועבר ארכיון code613m
2 פוסטים 2 כותבים 295 צפיות
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • Z מנותק
    Z מנותק
    zvi good
    כתב ב נערך לאחרונה על ידי
    #1

    אני משתמש בפונקציה 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)

    תגובה 1 תגובה אחרונה
    0
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    כתב ב נערך לאחרונה על ידי
    #2

    אכן בפונקציה 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)

    אפשר ליצור קשר dovid@tchumim.com

    תגובה 1 תגובה אחרונה
    2

  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.