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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. פונקציה Replase קבלת מספר ההחלפות

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

מתוזמן נעוץ נעול הועבר ארכיון code613m
2 פוסטים 2 כותבים 323 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • 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
      • דף הבית
      • קטגוריות
      • פוסטים אחרונים
      • משתמשים
      • חיפוש
      • חוקי הפורום