שלח תשובה

זירת השאלות

600
צפיות
21
תשובות

replice() ב JavaScript , צריך הסבר.

,‏ 19 באוגוסט, 2005

הפןונקציה replice() ב JavaScript , צריך הסבר.

1- כיצד להשתמש בה (בכללי) …

2- איך אפשר להשתמש ביותר מ replice() אחד על מחרוזת אחת {בדרך מדוייקת} … שיצא כך לדוגמה:
המחרוזת: abc
המחרוזת שתתקבל כאשר נחליף "a" ל "A" ו "c" ל "C"
יצא: AbC

3- כיצד ניתן לשנות בתוך המחרוזת רק תוכן מסויים שנמצא בין תווים מסויימים לדוגמה: בתוך המחרוזת רק התוכן שבין הסוגריים יוחלפו האותיות הקטנטת לגדולות "abc" ל "ABC":
המחרוזת עצמה: abcd (abcd) abcd
המחרוזת שתתקבל: abcd (ABCd) abcd

4- איך אפשר לגשת לכל אחד מחלקי המחרוזת בנפרד לדוגמה: אני רוצה לגשת לצירוף הטווים "abc" שמופיעה במחרוזת בפעם השנייה ולהחליפו ל "ABC" כך:
המחרוזת עצמה: abc abc abc
המחרוזת שתתקבל: abc ABC abc

*בקשר ל4, האמת היא שאני מעוניין לשנות את כל ה "abc" ל "ABC" אבל לא בשיטה של רגאקספט:
/abc/g
אלא רק עם מחרוזת …
'abc'
שישנה אחת אחת … (כמו שנאמר כאן, ששיטת הרגאקספט טופסת הרבה משעבים) ולכן אני לא מעוניין בה …

המון תודות לעוזרים …

תגיות:

21 תשובות

  1. BuildHome הגיב:

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

  2. BuildHome הגיב:

    אי אפשר ממש לעזור לך
    אתה רוצה כל מיני שיטות
    וזה מצריך שימוש במספר לולאות וכו' כדי שזה יעבוד.

    אם תסביר במה אתה מסתבך אולי אוכל לנסות לעזור לך במשהו ספציפי.

  3. MCG הגיב:

    בזה אני מסתבך …
    <script> י
    var x=new String('abc abc abc');
    var x=x.replace('abc','ABC');
    document.write(x);
    </script> i

    תסביר לי איך אני עושא את הלולעה שתשנה את כל ה abc ל ABC ???

  4. MCG הגיב:

    יש לי פטרון חלקי …
    <script>
    var x=new String('abc abc abc');
    var x=x.replace('abc','ABC')
    for(y=3;y<x.indexOf('abc');y++){var x=x.replace('abc','ABC')};
    document.write(x);
    </script>

    מה אפשר לתקן כאן כדי שזה יהיה נכון ?

  5. BuildHome הגיב:

    לי זה עובד
    אלא אם כן התכוונת למשהו אחר.
    אגב, הייתי עושה משהו פשוט וקצר יותר:
    var x=new String('abc abc abc');
    while(x.indexOf('abc')!=-1){x=x.replace('abc','ABC')};
    document.write(x);

    להבא תציג קודים כקוד פורום (הסבר ב'איך מציגים שאלה').

  6. MCG הגיב:

    אני לא רואה את תוכן הקוד בפיירפוקס.
    בגלל זה אני לא משתמש בו …

  7. MCG הגיב:

    ד"א: מה ההבדל בין do ל while ל for
    ול do while
    (כי לא הבנתי את העיקרון …)

  8. Dgogo הגיב:

    כעיקרון אותו דבר אבל שינוי קטן
    WHILE לולא עם כמה תנאים שבא לך
    FOR  לולאה כעיקרון עם תנאי אחד
    DO while מבצע פעם אחת אם התנאי שקר ממשיך כמו לולאה רגילה

  9. MCG הגיב:

    לא הבנתי …
    תסביר לי אחרת … (אם אפשר תן דוגמה …)

  10. MCG הגיב:

    עוד שאלה …
    במחרוזת הזו:
    abc (-abc-) abc
    איך אני יכול לשנות רק את הabc שנמצא בסוגריים ל ABC , שזה יראה כך:
    abc (-ABC-) abc

    *אני אישית חשבתי לפרק את הטקסט לפי הסוגריים כמו שעשינו עם העוגייה (ואז לטפל בחלק המרכזי)
    document.cookie.split(/_cookie_info_/); i
    אבל זו דרך מסובכת מדי …

    למישהו יש רעיון  ?

  11. MCG הגיב:

    אתה יכול להגיד לי…
    איך אני משנה את זה:
    abc (abc abc) abc
    לזה:
    abc (ABC ABC) abc

    *בלי split כי זו פעולה יקרה … (להשתמש ב /…/) כפי שהזכרת 10 עמודים לפני כן …

  12. BuildHome הגיב:

    בעיקרון אתה יכול לעשות את זה
    אבל זה טיפה מסובך.
    אתה יכול למשל לעשות לולאה שעוברת על כל ")" (פתיחת סוגריים)
    ובודק מה בתוכם. לאחר הבדיקה והשינויים (במידה ויש) אז מתווסף
    למשתנה את המיקום הנוכחי של הבדיקה במחרוזת ומשם זה ממשיך הלאה עד סוף המחרוזת.

    לא מבין לאיזו מטרה אתה צריך את זה. זה לא יעיל ולא חכם.

  13. MCG הגיב:

    זה בגלל ש …
    רציתי לכתוב את הדף שלי בUTF-8 ובאותה מידה גם לחסוך …
    אז החלטתי לנצל את הרפלייס של ג'ווה סקריפט …
    אני רציתי שבכל מקום שיש עברית יהיה
    he[טקסט]he
    אחרי זה החלטתי לעשות ככה:
    |he|טקסט|he|

    לדוגמה:
    מחרוזת
    text |he|yexy|he| text
    תוצאה:
    text טקסט text
    *מה שהמשתמש יראה (כי כתב UTF של עיברית שוקל כ 8 טווים רגילים 8byet)

    אחרי זה החלטתי לעשות קיצורים ורפלייס לכל התגים כמו קוד BB

    ולבסוף החלטתי שאני שלמרות שהשתמשתי בג'ווה סקריפט אני עדיין מעוניין במנועי החיפוש אז שמתי לדף את התג הזה הכי למעלה בBODY
    <h1 style="font-size:1pt;"><a href="./html.htm">HTML mode</a></h1>
    *הלינק מוביל לאותו דף עם תוכן אבל ב HTML מלא בלי ג'ווה סקריפט …

    כרגע הגעתי למסכנה  שקצת הגזמתי …

    מה דעתכם ?

  14. BuildHome הגיב:

    אישית, הייתי מוותר
    למה בדיוק לעשות את זה?

  15. MCG הגיב:

    כדי לחסוך ועדיין להצמד לכללים …

  16. MCG הגיב:

    שאלה אחרונה, css ב JavaScript
    האם זה נכון לייבא קובץ javascript (בתוך HEAD) לדוגמה:
    <script type="text/javascript" src="./scripts.js"></script>i
    כאשר תוכנו של הקובץ עצמו הוא:
    document.write('<style>body{…;} …</style>')i

    האם זה נכון לייבא קובץ javascript חיצוני שנותן הדפסה של גיליון סגנון ?

    *אני מעוניין לעשות כך כדי שדפדפן המשתמש יתען רק קובץ אחד ולא את קובץ הcss וה js (למרות ששמעתי שזה מאיט את תעינת הדף קבצים חיצוניים [מומלץ לרשום הכל בדף עצמו])

    מה דעתכם על כך?

    ועוד שאלה קטנה …, האם לדעתכם הסריפט הזה נחוץ לאתר:
    if(window.top.location.href!=window.self.location.href){window.top.location.href=window.self.location.href};

    *זה "מפוצץ פריימים" …

    המון תודות לעוזרים …

  17. BuildHome הגיב:

    תשובות
    1. תעשה את התגית של גליון הסגנון באותו עמוד. לכל דבר יש את המטרה שלו כך שכדאי להיצמד לזה.

    2. יש מטרה ל'מפוצץ פריימים' כך שזו החלטה שלך. יש סיבה שמישהו ישים את אתרך בפריים פנימי באתר שלו?
    משתמשים בזה בד"כ כדי להוריד פרסומות בשרתים חינמיים כמו לייקוס (כמובן שזה לא חוקי).

  18. MCG הגיב:

    אוקיי, המון תודות …
    אני ממש מרוצה מוובמסטר ובמיוחד מהמנהלים בו (במיוחד BuildHome) , תמשיכו כך …

שלח תשובה