› פורומים › אפיון ופיתוח פריוריטי › הוצאת תווי – ממחרוזת
- This topic has 14 תגובות, 3 משתתפים, and was last updated לפני 2 שנים, 11 חודשים by yitzchok.
- Post
- Replies
-
- אפריל 27, 2021 בשעה 11:55 am
- אפריל 27, 2021 בשעה 4:05 pm
הלוואי שהיתה פונקציה להחלפת תווים בתוך ביטוי בשאילתא.פעם הייתי עושה דבר כזה במעמד עדכון השדה ושומר את הגרסה הנקייה בצד. אז יכולתי לעבור תו תו ולשמור לעצמי פחות או יותר רק ספרות.
בשיטה שלכם צריכים לדעת כמה תווים כאלה יהיו לכל היותר ואם גם רוצים להוציא נקודות או רווחים לחזור על התוצאה לצורך זה זה עוד יותר קשה.
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- אפריל 28, 2021 בשעה 12:48 am
מתחילים עם המחרוזת במשתנה ועוד משתנה ריק.מחזיקים משתנה עם המיקום במקור.
לוקחים את התו ה-x בעזרת STRIND או SUBSTR (לשני יש יתרון שלוקח פרמטר משתנה, לראשון שמתנהג יותר טוב עם רווחים עד כמה שאני זוכר). פתרון ל-STRIND – כל פעם לקרוא את התו הראשון ואז לשים במשתנה המקור את הערך ההוא מתו 2 עד הסוף, כך שבפעם הבאה התו הבא הוא התו הראשון…
ואז בודקים את התו שלקחו ומחליטים האם לשרשר אותו למחרוזת הפלט או לא.
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- אפריל 28, 2021 בשעה 9:10 am
יש גם פטנט כזה
<p style="direction: ltr;">EXECUTE FILTER '34', '34','32', :I, :O;</p>
החלפת תווים (קודי ASCII) לדוגמה החלפת קוד 34 ב 32, מופיע ב SDK- אפריל 28, 2021 בשעה 1:46 pm
קודם כל להפעלת תוכנה (EXECUTE) יש בטח מחיר ניכר בביצועים.יותר מזה, כך המסמך מתאר את תוכנת פילטר:
The FILTER program performs various manipulations on the contents of a
specified text file.
אפשר להשתמש בתוכנה זו לפלטר טקטס במשתנה לתוך משתנה אחר? לא בטוח.הרי אם לא, אז מדובר בכתיבת המחרוזת לקובץ (צריכים לדאוג שיהיה יחודי), הפעלת תוכנת FILTER עליו, הפעלת ממשק טעינה לטבלה לשמור את תוכן הקובץ שיצא מ-FILTER בטבלת לינק, לינקוק לאותה טבלה, קריאת הטקסט לתוך משתנה, ואז UNLINK AND REMOVE.
יכול להיות שיעבוד אבל הייתי משתמש בזה רק אם לא מצאתי פתרון אחר שנראה יעיל.
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- מאי 2, 2021 בשעה 12:33 pm
השימוש ב FILTER להחלפת תווים יכול להיות שימושי כאשר טוענים קובץ חיצוני ורוצים לשנותו לפני הכנסת הנתונים למערכת.בניסיון להפעיל FILTER מקובץ טקסט, העברית יוצאת משובשת בקובץ הפלט. איך ניתן להתמודד עם זה?
(לדג' 2 5 2 J C B ױײװ . ׀. )
- מאי 2, 2021 בשעה 1:09 pm
בדקתי שוב ואין שיבוש בעברית כשעושים פילטר על קובץ טקסט. העברית משתבשת כאשר עושים פילטר על קובץ CSV.איך ניתן להפוך CSV לטקסט בקוד?
תודה
- מאי 2, 2021 בשעה 6:47 pm
קודם כל נראה לי שעברנו לנושא אחרמצד אחד הייתי אומר שיש סיכוי ש filter ישבש את סדר השורה
מצד שני אני חושש שהבעיה כאן לא קשור להיותו של הקובץ בצורת csv אלא שהוא אולי לא בקידוד הצפוי (utf8 לעומת utf16 או כלל לא יוניקוד)
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- מאי 4, 2021 בשעה 10:30 am
EXECUTE FILTER '-','-', ", :UTF8TXTFILE , :FILTERED1) הפילטר להחלפת תווים עובד כאשר הקלט הוא קובץ בפורמט UTF8. אבל באיזה פורמט קובץ הפלט שלו? איך ניתן להתאים אותו לאחר החלפת התווים לטעינה לטבלה?
בניסיון לטעון את קובץ הפלט שלו ב DBLOAD לא מתקבלות תוצאות רצויות.
ניסיתי ליצור קובץ חדש מקובץ הפלט ע"י -utf82unicode כדי להתאים את הפורמט אבל ב DBLOAD עדיין לא מתקבלות תוצאות רצויות.
2) הפילטר החליף תווי '-' בתו רווח ריק. אבל האם ניתן למחוק לגמרי תו זה כך שלא ישאר אפילו רווח במקום תו זה?
תודה
- מאי 4, 2021 בשעה 11:25 am
1. לגבי הקובץ הוא מעתיק מהקובץ המקורי, ההעתק הוא אותו פורמט2. לגבי התו הריק , ’32’, ’34’,’34’, כאן, אתה מחליף את הקוד גירשיים (34) לקוד רווח (32), אם את רוצה ל NULL תבחר קוד "0" תסתכל בקודי ASCII
אני משתמש בקובץ TAB, בקובץ CSV יש בעיה אם אתה מקבל מספר "1,234" יש בעיה עם ה ","
לגבי העברית אתה חייב UNICODE בטעינה לפריוריוטי
- מאי 4, 2021 בשעה 3:35 pm
פריוריטי לא חזקה בדברים כאלה.אם אתם כבר מעבדים את הקובץ לפני טעינה הייתי עושה את זה בעזרת כלי חיצוני כמו סקריפט של פווארשל.
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- מאי 5, 2021 בשעה 10:17 am
ראיתי שאכן הפילטר שומר על צורת הקובץ (utf8) ונטען כראוי ל DBLOAD (לאחר הפיכתו ב utf82unicode), זאת כל עוד החלפת התווים בפילטור היא לתו אחר רגיל. אבל כשמחליפים ל '0' (NULL) זה יוצר איזה שיבוש שלכן לא נטען ב DBLOAD, נראה שזה מפצל את השדה במקום להוריד את התו.ניסיתי להחליף ל 'backspace '8 אבל התוצאה היא כמו החלפה ל 'space '32 , כך שאמנם לא משתבש אבל מחליף את התו לרווח ולא מוריד את התו לגמרי.
אולי יש רעיון איך להוריד את התו בפילטר? חוץ מזה עובד מצוין.
תודה
- דצמבר 27, 2021 בשעה 10:01 pm
for the record כי השתתפתי בדיון כאן בזמנולמדתי היום (כנראה לא קלטתי אי פעם שהדבר אפשרי) שהתוכנית FILTER מסוגלת להוריד תווים לגמרי. בדוגמאות למעלה משתמשים בתוכנית במצב של עדכון טווח של תווים, וככה היא לא מכניס או מוציא אלא רק משנה ברמת התו.
לעומת זאת כאשר משתמשים בתוכנית ב-mode של replace- אז הפרמטרים הם לא ערכים של תווים אלא מחרוזות. הפקודה הבאה, לדוגמה יכולה להוריד פסיקים מהקובץ (כמובן שברתי שורות ודילגתי פסיקים)
EXECUTE
FILTER
'replace-'
','
"
infile:
outfile:
;השתמשתי בו לנקות קובץ שיהיה קובץ CSV
אני מפיק קובץ מופרד טאבים בעזרת ממשק מסכי, מוריד כל פסיק ככה (אז אני יודע שאין פסיקים שיתפרשו כמפרידי עמודות) ואז עושה עוד FILTER להמיר את הטאבים לפסיקים.[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
תגיות: מחרוזות FILTER תווים
- יש להתחבר למערכת על מנת להגיב.