שלח תשובה

זירת השאלות

824
צפיות
10
תשובות

השוואת טקסטים

,‏ 10 במאי, 2008

שלום,

אני צריך לבנות פונ' המשווה בין טקסטים ומדגישה את ההבדלים ביניהם..
לדוג': טקסט א' – "דני הלך לגן", טקסט ב' – "דני הלך לדן".
אני רוצה שהפונ' תשים שורה תחת שורה ותדגיש את השינויים, כך:
דני הלך לגן.
דני הלך לדן.

הדוג' היא ממש קטנה יחסית למאמר שלם, אבל היא באה רק כדי להראות מה אני רוצה..


תגיות:

10 תשובות

  1. אני חושב שאתה צריך לעבור אות אות
    אם האות הראשונה בסטרינג X היא כמו האות הראשונה בסטרינג Y – תזרוק את כל אחת מהן למשתנה חדש כמו שהן. אם הן לא שוות – תזרוק אותן למשתנה החדש עטופות בתג B (לצורך הדוגמא). וכן הלאה על כל האותיות.

    אם אתה מנסה ליישם את זה ב-JS אתה צריך לרוץ בלולאת for על אורך המשתנה (str.length) וב-substr לשליפת האות הנכונה בכל מחרוזת. אם אתה עובד בשפה אחרת אני בטוח שיש פונקציה דומה לטיפול במחרוזות…


    אלי ענתבי
    entry interactive
    http://www.entry.co.il

  2. sharons הגיב:

    באיזו שפה?
    אם ב-ASP למשל אז אין יותר מדי פונקציות שאפשר לשחק איתן..
    אבל ב- ASP.NET יש הרבה יותר פונקציות לטיפול במחרוזות, ופונקציות לחיפוש ומיון מערכים שיכולות לעזור לך מאוד.

  3. אל תבלבל אותו, גם בASP אפשר לעשות זאת

  4. sharons הגיב:

    *תבלבלי, וחס וחלילה לא אמרתי שאי אפשר
    ב- ASP

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


    Relax, it's only ones and zeros!  

  6. rjnhojbht הגיב:

    זו הבעיה..
    הבעיה היא שיכול להיות מצב כזה שבו כמות המילים לא תהיה שווה, אבל מכיוון שנראה לי שאין פיתרון למצב כזה, אז התחלתי עם הבעיה הקלה יותר..
    ניסיתי לחשוב על רעיון לפתרון למצב שבו כמות המילים לא שווה(ושיעשה רווח, לדוג', במקום שחסר), אבל בינתיים לא מצאתי פיתרון שלם למצב כזה..  
    אם יש למישהו רעיון, אשמח לשמוע.

  7. Shuki142 הגיב:

    לא נראה כזה בעיה
    דבר ראשון אתה מקבל את שתי ה Input שלך.
    אחד לכל שורה.

    לאחר מכן תשאר שאלה פשוטה, איזה טקסט יותר קצר – שמור את הערך לאחר מכן.

    עכשיו תעבוד עם השיטה של Split שקיימת גם ב ASP ותבנה לך שתי מערכים, מערך אחד לכל String שאתה מקבל מהלקוח (String לכל משפט).
    כמובן שבפונקציה Split תבקש לפצל לפי רווח, מאמין שאתה מבין למה אני מתכוון.

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

    עכשיו תשלוף את גודל המערך הקצר ביותר שיש לך מבין השתיים ותעבור בלולאת For פשוטה מ – 0 עד לאורך שיש לך במערך הקצר.

    בלולאה כל פעם תעשה שאלת If שמשווה בין שתי המערכים באותו מקום


    array(i) = array1(i)

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

    response.write(array(i) & array1(i))

    במידה והם לא שווים תדפיס את שתיהם ללקוח בתוספת של התווים


    <b></b>
    Example:
    response.write("<b>"& array(i) &"</b><b>"& array1(i) &"</b>")

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

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

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

  8. rjnhojbht הגיב:

    אממ
    כעיקרון, אני לא יודע איפה חסרה המילה, יכולה להיות חסרה מילה בתחילת המשפט, באמצעו או בסופו, ולכן הפיתרון שהבאת לא פותר את כל הבעיות, מה קורה כאשר חסרה מילה בתחילת המשפט או באמצעיתו – כל המילים שלאחריו יסמונו כלא שוות?

  9. Shuki142 הגיב:

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

    שיהיה יום טוב.

  10. sharons הגיב:

    מה בדיוק אתה מחשיב כהבדל?
    הבדל הוא אך ורק שתי מילים "דומות"?
    או שזו גם יכולה להיות בדיוק אותה מילה אך במיקום שונה בשני המשפטים?
    ככה אם יש לך
    אבא אמא אח ו- אח אמא אבא, עדיין מבחינה "רעיונית" יש הבדלים בין שני המשפטים, ובהקשר הזה עבודה לפי מילים כן תהייה אפקטיבית.

שלח תשובה