פורסם 2007 באוקטובר 1618 שנים אני מנסה לבנות סקריפט להיפוך טקסט עברי.כרגע השיטה שבה הוא עובד היא כדלקמן: הוא מקבל מחרוזת כלשהי כקלט. ישנה לולאה שעוברת לאורכה וברגע שהיא מאתרת אות בעברית, היא בודקת מראש(באמצעות לולאה מקוננת) את אורכה (סופרת את מספר התווים הרצופים בעברית). לאחר מכן מתבצעת החלפת האותיות במילה שנמצאה, והלולאה ממשיכה הלאה.בקיצור, הסקריפט מחליף את האותיות בכל מילה בעברית בנפרד במחרוזת. אך מתעוררים כאן 2 בעיות:1. אם נכניס קלט שכזה: "ג'מיל אוהב בנות" אז המילה ג'מיל לא תתהפך כראוי, כי הסקריפט יתייחס לקלט המדובר כשתי מילים נפרדות(במקום לקבל "לימ'ג" נקבל "ג'לימ")2. ההיפוך מתבצע על המילים עצמן ולא על כל השורה. לכן הפלט לא יחליף את סדר המילים. כלומר, "מה נשמע" יניב "המ עמשנ" ולא "עמשנ המ".אשמח לקבל רעיונות כיצד ניתן בדרכי להתגבר על שני המכשולים הללו. גם רעיון לאלגוריתם אחר יתקבל בברכה, אם כי הייתי מעדיף להמשיך עם מה שעשיתי.
פורסם 2007 באוקטובר 1618 שנים פונקציה שרשמתי ב VB לפני כמה שנים טובות.Private Function OpIT(sGetString As String) As String Dim I As Integer Dim a, b As String Dim NonHeb As String Dim ascVal As Integer NonHeb = "" For I = o To Len(sGetString) b = Mid(sGetString, 1, Len(sGetString) - I) a = Right(b, 1) If a <> "" Then ascVal = Asc(a) If (ascVal >= 33 And ascVal <= 58) Or (ascVal >= 61 And ascVal <= 95) Or (ascVal >= 97 And ascVal <= 122) Or (ascVal = 123) Then NonHeb = a & NonHeb Else If Not NonHeb = "" Then OpIT = OpIT & NonHeb & a NonHeb = "" Else OpIT = OpIT & a End If End If End If Next If Not NonHeb = "" Then OpIT = OpIT & NonHebEnd Function
פורסם 2007 באוקטובר 1618 שנים מה הפואנטה בלהחליף את המילים? שטקסט עברי מתהפך לא רק האותיות בתוך המילים מתהפכות?בכל מקרה לגבי ה- ' אתה צריך להחשיב אותו כאות עברית... כמו כן כל סימון כמו -,",.,: וכו' אם אתה בכל מקרה רוצה שהתוכנה גם תהפוך את המילים - למה אתה לא הופך כל כל הקלט בלי קשר למילה עצמה["גיא הלך לים" -> "םיל ךלה איג" זה מה שאתה רוצה? זה פשוט להפוך את המערך של האותיות (אם זו שפה שמתיחסת ל string כמערך).בכל מקרה האלגוריתם צריך לעבור על האותיות - כשמוצא אות עברית להתחיל להכניס אותם למערך אותיות - כשמוצא אותו לועזית - להפוך את מערך האותיות - ולהחזיר אותו לקלט המקורי באותו מקום שהתחלת לחתוך...
פורסם 2007 באוקטובר 1618 שנים זה בדיוק מה שהקוד שלי עושה.אות אחרונה בטקסט המקורי הופכת להיות ראשונה בטקסט החדש וכו'.הפונקציה גם מזהה אותיות לועזיות ומספרים ולא הופכת אותם.
פורסם 2007 באוקטובר 1618 שנים רגע, אתה רוצה שהקוד שלך לא יהפוך את סדר המילים או כן יהפוך את סדר המילים?
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.