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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. חיפוש ( {{טקסט}} ) במחרוזת והחלפתם.

חיפוש ( {{טקסט}} ) במחרוזת והחלפתם.

מתוזמן נעוץ נעול הועבר תכנות
12 פוסטים 5 כותבים 234 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ש מנותק
    ש מנותק
    ש.ב.ח.
    כתב ב נערך לאחרונה על ידי ש.ב.ח.
    #1

    שלום וברכה

    האם זו הדרך הנכונה והקלה לחפש ולהחליף

    const subject = "hi {{firstname}} {{lastname}}";
    const search = [...subject.matchAll(/({{)(.+?)(}})/g)];
    
    search.map(item => {
      const token = item[2];
      const replace = get...(token); // function to get text by token
      subject = subject.replace(item[0], replace); 
    })
    
    תגובה 1 תגובה אחרונה
    2
    • yossizY מנותק
      yossizY מנותק
      yossiz
      כתב ב נערך לאחרונה על ידי yossiz
      #2

      @ש-ב-ח דבר ראשון, תודה על השאלה! אני רואה שאלות כאלו כהזדמנות מצויינת להשתפשף והם תועלת לא רק לשואל אלא (או אפילו: בעיקר) לעונים.
      חיפושים והחלפות זה אחד מהתחומים ב-JS שאני בודק את התיעוד כל פעם, כי משום מה זה לא נדבק לי בראש...
      אבל זה מה שיצא לי כרגע:

      const subject = "hi {{firstname}} {{lastname}}";
      const result = subject.replace(/{{(.+?)}}/g, (_, token) => getValueForToken(token))
      

      כמה הערות על הקוד שלך:

      • אין צורך להכניס את המסולסלים בתוך קבוצה ברג'קס, רק את ה-token עצמו
      • שימוש ב-map לא מומלץ כאן כי אתה לא משתמש בערך המוחזר, במקום זה תשתמש ב-forEach או בלולאת for ... of
      • כמו שאתה רואה בקוד שלי, אין צורך לעשות את הלולאה בעצמך כי replace מקבלת פונקציה
      • הערה לא חשובה על בחירת שמות משתנים: הייתי קורא למתשנה search בשם searchResults כי זה מייצג את תוצאת החיפוש ולא החיפוש עצמה. בתוך הלולאה הייתי קורא לכל item בשם פחות ג'נרי, למשל: searchResult בלשון יחיד. (משתנים אלו מתייתרים בקוד שלי).
      • במקום item[x] שלא מתעד את הייעוד של המשתנה, הייתי עושה destructuring בפרמטרים של הפונקציה:
      search.map(([placeholder, , token]) => {
        const replace = get...(token); // function to get text by token
        subject = subject.replace(placeholder, replace); 
      })
      

      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

      ב ש 3 תגובות תגובה אחרונה
      5
      • ב מנותק
        ב מנותק
        ב.ל
        השיב לyossiz ב נערך לאחרונה על ידי
        #3

        @yossiz אמר בחיפוש ( {{טקסט}} ) במחרוזת והחלפתם.:

        replace(/{{(.+?)}}/g

        או replaceAll

        ליצירת קשר - baruchlamdan@gmail.com

        yossizY תגובה 1 תגובה אחרונה
        2
        • yossizY מנותק
          yossizY מנותק
          yossiz
          השיב לב.ל ב נערך לאחרונה על ידי
          #4

          @ב-ל לפי התיעוד (שהלכתי לבדוק עכשיו...) משמע שגם בשימוש ב-replaceAll חייבים את דגל g ואם כן אין יתרון בשימוש ב-replaceAll מול replace. האם אני צודק.

          📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

          ב dovidD 2 תגובות תגובה אחרונה
          0
          • ב מנותק
            ב מנותק
            ב.ל
            השיב לyossiz ב נערך לאחרונה על ידי
            #5

            @yossiz אמר בחיפוש ( {{טקסט}} ) במחרוזת והחלפתם.:

            @ב-ל לפי התיעוד (שהלכתי לבדוק עכשיו...) משמע שגם בשימוש ב-replaceAll חייבים את דגל g ואם כן אין יתרון בשימוש ב-replaceAll מול replace. האם אני צודק.

            לפי איך שהבנתי לא צריך. אני מכיר את זה מכאן

            ליצירת קשר - baruchlamdan@gmail.com

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

              @yossiz אמר בחיפוש ( {{טקסט}} ) במחרוזת והחלפתם.:

              @ב-ל לפי התיעוד (שהלכתי לבדוק עכשיו...) משמע שגם בשימוש ב-replaceAll חייבים את דגל g ואם כן אין יתרון בשימוש ב-replaceAll מול replace. האם אני צודק.

              אכן, הreplaceAll בא לעולם בשביל להציל מתכנתים אומללים שמנסים להחליף הכל עם טקסט ולא עם ביטוי regex:
              https://github.com/tc39/proposal-string-replaceall
              מקרה שממחיש כמה לא טוב שפה שהתאימות לאחור שלה לא מוגבלת בזמן.

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

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

              תגובה 1 תגובה אחרונה
              2
              • ש מנותק
                ש מנותק
                ש.ב.ח.
                השיב לyossiz ב נערך לאחרונה על ידי
                #7

                @yossiz יישר כוחך.

                תגובה 1 תגובה אחרונה
                1
                • ש מנותק
                  ש מנותק
                  ש.ב.ח.
                  השיב לyossiz ב נערך לאחרונה על ידי
                  #8

                  @yossiz אמר בחיפוש ( {{טקסט}} ) במחרוזת והחלפתם.:

                  שימוש ב-map לא מומלץ כאן כי אתה לא משתמש בערך המוחזר, במקום זה תשתמש ב-forEach או בלולאת for ... of

                  באמת מעניין אותי אם זה משנה מאוד מבחינת ביצועים או כל סיבה אחרת
                  אם אני משתמש עם המערך רק עבור הלולאה ולא מעניין אותי מה הוא מכיל בסופו של דבר

                  dovidD רפאלר 2 תגובות תגובה אחרונה
                  0
                  • dovidD מנותק
                    dovidD מנותק
                    dovid ניהול
                    השיב לש.ב.ח. ב נערך לאחרונה על ידי dovid
                    #9

                    @ש-ב-ח מנסיוני זה שאלה של עקשנים... וזה נפוץ בפרט בJS, שאיש הישר בעיניו יעשה ואם תגיד לו מה לעשות יגיד לך טול קורה מבין עיניך, הרי JS דארעא חד הוא.
                    תאר לך שאתה רואה מתכנת שלא משתמש בif אלא בwhile עם יציאה בתוך הלולאה... זה שנכנס לך בראש שmap זה לעשות פעולה על כל איבר בלולאה וזה לא! זה לא סיבה להחזיק בו. מה רע לשנות הרגלים? יש המון רע בלהמשיך להשתמש בדבר לא מתאים: א. קריאות לעצמך ולאחרים (תאר לך שהיית עושה את כל התנאים בלולאה כנ"ל) ב. רמת קוד בעיני אחרים ג. הבנת קוד של אחרים אחרי שאתה רגיל לכתוב אחרת, ועוד ועוד.
                    ואם כבר ביצועים, כן, זה לוקח קצת זיכרון ואפילו אולי מעבד מיותרים, אבל צריך טלסקופ להבחין בדברים האלה.

                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

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

                    ש תגובה 1 תגובה אחרונה
                    7
                    • רפאלר מנותק
                      רפאלר מנותק
                      רפאל
                      השיב לש.ב.ח. ב נערך לאחרונה על ידי רפאל
                      #10

                      @ש-ב-ח עזוב את העובדה שלמילה Map יש משמעות, אנשים שנתקלים בMap מצפים להתנהגות מסויימת, במילים אחרות: מעבר לפונקציונליות של הקוד, למוסכמות יש ערך לא פחות חשוב (אפילו אם ההתנהגות של שני המתודות היו זהות).

                      תגובה 1 תגובה אחרונה
                      5
                      • ש מנותק
                        ש מנותק
                        ש.ב.ח.
                        השיב לdovid ב נערך לאחרונה על ידי
                        #11

                        @dovid אמר בחיפוש ( {{טקסט}} ) במחרוזת והחלפתם.:

                        א. קריאות לעצמך ולאחרים

                        @רפאל אמר בחיפוש ( {{טקסט}} ) במחרוזת והחלפתם.:

                        אנשים שנתקלים בMap מצפים להתנהגות מסויימת,

                        היינו הך.

                        קיבלתי.

                        רפאלר תגובה 1 תגובה אחרונה
                        2
                        • רפאלר מנותק
                          רפאלר מנותק
                          רפאל
                          השיב לש.ב.ח. ב נערך לאחרונה על ידי
                          #12

                          @ש-ב-ח אמר בחיפוש ( {{טקסט}} ) במחרוזת והחלפתם.:

                          היינו הך.

                          כנראה הושפעתי מתשובתו החדה של @dovid

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

                          בא תתחבר לדף היומי!
                          • התחברות

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

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