› פורומים › אפיון ופיתוח פריוריטי › Reverse למחרוזת
- This topic has 7 תגובות, 3 משתתפים, and was last updated לפני 5 שנים, 8 חודשים by רועי זלוף.
- Post
- Replies
-
- אפריל 11, 2019 בשעה 3:47 pm
פריוריטי לא מכיר את הפונקציה שציינת אבל ניתן לקבל את התוצאה הרצויה בשימוש במספר פונקציות מה – SDK בשילוב עם לולאה ו – STRLEN .- אפריל 12, 2019 בשעה 11:02 am
הפונקצייה לא חייבת להקרא reverse… כל שפה עם השמות שלה. אבל זה נכון שבשפה של פריוריטי אין פונקציה שעושה פעולה כזאת.אין לי קוד מוכן אבל אתאר, ואזכיר כמה מהנקודות הקשות.
אתה צריך משתנה שאתה מאתחל באורך המחרוזת.
אתה מאתחל מחרוזת יעד.
לכאן תחזור בלולאה.
אתה קורא את התו במקום הזה ומוסיף אותו למחרוזת היעד.
אתה מוריד אחד מהמשתנה.
אם לפני המשתנה אתה לא סיימת (תו 0) אז תחזור לנקודה שציינתי אחרת תמשיך.איפה הקושי?
RSTRIND/STRIND לא נותנןת לך לקחת תו או תווים ממקום שנקבע ע"פ משתנה, אלא רק לפי מקום קבוע. יופי, יש את RSUBSTR/SUBSTR בגרסאות אחרונות אבל דעו לכם שאלה עושים trim. יכול להיות שכאן זה לא יפריע אבל במקום אחר נפלתי על זה.
יכול להיות שאם יש רווח במחרוזת לא תצליח לשרשר אותו למחרוזת היעד כי פריוריטי אוהבת להוריד רווחים מקצוות של מחרוזות. אם כן אולי תצטרך לשמור מספר רווחים וכאשר תמצא אחר כן תו תכניס את הרווחים לפני.מקווה שזה מכוון אותך.
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- אפריל 12, 2019 בשעה 5:43 pm
לפני זמן מה כתבתי קטע קוד שהפך את הכיוון של מחרוזת, בדומה לשיטה עליה כתב יצחק. וכמו שהוא כתב, הקטע התעלם מרווחים שהיו באמצע המחרוזת, כך לדוגמא אם המחרוזת היתה "חזק ואמץ", התוצאה היתה "ץמאוקזח", שלא ממש עזר לי.היום אני חושב שאפשר לחפש רווחים באמצעות STRPIECE ובעקבות כך להפוך את המחרוזת קטע קטע. אבל קודם צריך לחפש את ההופעה *האחרונה* של הרווח, לא את ההופעה הראשונה, אשר מאד מסבך את האלגורתם.
אין ספק שפריוריטי חסרה פונקציות לטיפול במחרוזות. בדרך כלל זה לא משנה, אבל לפעמים, זה חיוני, במיוחד כאשר מתממשקים עם קבצים חיצוניים. במקרים כאלה כאשר אין ברירה, אני נוטה לכתוב תכנית בשפת תכנות רגילה מחוץ לפריוריטי אשר מטפלת בקובץ ומשאיר לפריוריטי לקלוט את הקובץ שעבר עיבוד.
- אפריל 14, 2019 בשעה 4:48 pm
תודה רבה לכולם, הקשבתי לעצות ובניתי את האלגוריתם הבא שאכן מצליח להפוך עם רווחים:/***************************REVERSE STRING*********************/
:ST1 =The Original String;
:ST2 = ";
:ST3 = ";
:TEMP = ";
:PIECE = ";
:STR = 0;
:AGAIN = 12;
LABEL 1;
:ST2 = ";
:PIECE = STRPIECE(:ST1,' ',:AGAIN,1);
:AGAIN = :AGAIN – 1;
:STR = STRLEN(:PIECE);
LABEL 2;
:TEMP = SUBSTR(:PIECE,:STR,1);
SELECT STRCAT(:ST2,:TEMP) INTO :ST2 FROM DUMMY;
:STR = :STR – 1;
LOOP 2 WHERE :STR > 0;
SELECT STRCAT(:ST3,' ',:ST2) INTO :ST3 FROM DUMMY;
LOOP 1 WHERE :AGAIN > 0;
/*************************************************************/בסופו של דבר המחרוזת ההפוכה נמצאת במשתנה ST3.
- אפריל 14, 2019 בשעה 7:54 pm
הקוד לא כ"כ קריא. בפורום חשוב לשים קוד בתגיות של קוד שקובע כיוון שמאל לימין וכו'. יש אייקון עם "קטן מ-" ו-"גדול מ-" – זה הכפתור לתגיות אלה.[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- אפריל 16, 2019 בשעה 10:58 am
:ST1 = :METL_DETAILS;
:ST2 = '';
:ST3 = '';
:TEMP = '';
:PIECE = '';
:STR = 0;
:AGAIN = 12;
LABEL 1;
:ST2 = '';
:PIECE = STRPIECE(:ST1,' ',:AGAIN,1);
:AGAIN = :AGAIN - 1;
:STR = STRLEN(:PIECE);
LABEL 2;
:TEMP = SUBSTR(:PIECE,:STR,1);
SELECT STRCAT(:ST2,:TEMP) INTO :ST2 FROM DUMMY;
:STR = :STR - 1;
LOOP 2 WHERE :STR > 0;
SELECT STRCAT(:ST3,' ',:ST2) INTO :ST3 FROM DUMMY;
LOOP 1 WHERE :AGAIN > 0;המחרוזת המקורית נמצאת מלכתחילה ב-משתנה ST1, והמחרוזת ההופכית נמצאת ב-ST3.
- יש להתחבר למערכת על מנת להגיב.