עריכת מחרוזת עם מספרי פלאפון
-
@dovid ואוו נדמה לי כ תורה על רגל אחת. מושלם!
האמת בתחילה ביצעתי את זה עם פונקציית map על אובייקט פריטים שהבאתי, ואח"כ הוספתי את הפסיק וחיברתי למחרוזת אחת.
עכשיו אני חושב אולי כדאי לעשות את זה בנפרד, כלומר לתת למשתמש גם אפשרות להדביק רשימת מספרים שלו, אני מניח הם יגיעו כבר עם פסיקים, ואז לרוץ על הכל. רק שאז יהיה קשה לתקן אם אין אפס בתחילה הוסף אפס בתחילה, למקרה שהעתיק מאקסל, אולי חיפוש אחר החלף 5, ב- 05,במחשבה שנייה אני שם לב שאז לא אוכל להריץ את יתר החישובים להסיר כשרים ומספרים ביתיים. אני בכל מקרה חייב למצא דרך לעבור מספר מספר ממחרוזת לפי הפסיק. ורק אח"כ לבנות את המחרוזת מחדש.
יש דרך כזו לעבור על מחרוזת ועבור מספר מספר לפי הפסיקים כמו map? -
@אבי-203 זה קל להוסיך אפס בהתחלה, כותבים ככה:
"44".replace(/^([^0])/, '0$1')
(מתכנת מצוי עלול לעשות הסרה של אפס בקלט, והוספה גורפת לכולם בסוף כמו הבדיחה עם הקומקום).
אני משער שזה לא נוגע לך, אבל אני לא מתאפק מלהוסיף https://tchumim.com/topic/915, השפה שונה אבל הביטוי זהה..). -
@אבי-203 אמר בעריכת מחרוזת עם מספרי פלאפון:
במחשבה שנייה אני שם לב שאז לא אוכל להריץ את יתר החישובים להסיר כשרים ומספרים ביתיים. אני בכל מקרה חייב למצא דרך לעבור מספר מספר ממחרוזת לפי הפסיק. ורק אח"כ לבנות את המחרוזת מחדש.
יש דרך כזו לעבור על מחרוזת ועבור מספר מספר לפי הפסיקים כמו map?var userInput = '' //יכול להיות מופרד בפסיק או בקפיצת שורה. userInput.split(/[\n,\t]/) .map(x => x.replace('\D', '').replace(/^([^0])/, '0$1')) //הסרת תווים זרים והוספת אפס .map( ... ); //בדיקה אם כשר...
-
@אבי-203 אמר בעריכת מחרוזת עם מספרי פלאפון:
איפה אני יכול ללמוד על כל תורת הביטויים האלו??
@chv אמר בעריכת מחרוזת עם מספרי פלאפון:
ל @dovid יש כאן מדריך מושקע
https://tchumim.com/post/10185כיהודה ועוד לקרא אני אישית נהנתי מ https://regexone.com/ יש שם תרגול חי צעד אחר צעד.
-
שיפור:
var koshers = [ "05041", //פלאפון "05276","05271", //סלקום "05484","05485", //פרטנר "05731", "05741", //מירס "05331", //הוט "05831","05832","05337","05338", //גולן "05567" //רמי לוי ]; var userInput = ''; //יכול להיות מופרד בפסיק | קפיצת שורה | טאב var result = userInput.split(/[\n,\t]/) .map(x => x.replace('\D', '').replace(/^([^0])/, '0$1')) //הסרת תווים זרים והוספת אפס .map(function(tel){ if(!/0[57]\d{8}|0[23489]\d{7}/.test(tel)) return {valid: false, number: tel}; var portable = tel.startsWith('05'); var kosher = portable && koshers.includes(tel.substring(0,4)); return { number: tel, valid: true, isPortable: portable, isKosher: kosher, smsCapable: portable && !kosher }; });
-
@אבי-203 כתבתי קוד קצת גנרי (בהתאם למה שהבנתי שאתה צריך).
תוכל לסנן בfilter לפי האובייקט כדי להסיר מספרים לא תקינים או לקבל רק כשרים או להיפך וכולי ולבסוף בmap לקבל רק את הnumber מתוך האובייקט. למשל תשנה את שורה 18, ככה}).filter( x => x.isPortable).map(x => x.number);
-
@dovid אמר בעריכת מחרוזת עם מספרי פלאפון:
startsWith('05')
זה מה שיצא לי בסוף, וזה עובד! מקווה שלא קשקשתי שטויות...
בכל אופן כיון שזה עובד אז תודה גדולה!!אגב. בחברת הסמס שאני משתמש בה אין את הפונקצייה הזו לסינון כשרים ותקולים, מסיבה מאוד פשוטה כי אתה מחוייב גם על הכשרים שנשלחו...
var smsing = [ "05041","05276","05271","05484","05485","05731", "05741", "05331", "05831","05832","05337","05338","05567" ]; let rObj = []; let userInput = $w('#textBox1').value; userInput.split(/[\n,\t]/).map(obj => { var smsto =obj.replace(/\D/gi, '').replace(/^([^0])/, '0$1') if (smsing.includes(smsto.substr(0, 5))===false && smsto.substr(1, 1) === "5") { if(!/0[57]\d{8}|0[23489]\d{7}/.test(smsto)) {}else{ rObj += smsto + "," return rObj } } }) $w('#text358').text = "!הסתיים בהצלחה" $w('#textBox1').value = rObj
-
@OdedDvir אמר בעריכת מחרוזת עם מספרי פלאפון:
@אבי-203 אמר בעריכת מחרוזת עם מספרי פלאפון:
איפה אני יכול ללמוד על כל תורת הביטויים האלו??
@chv אמר בעריכת מחרוזת עם מספרי פלאפון:
ל @dovid יש כאן מדריך מושקע
https://tchumim.com/post/10185כיהודה ועוד לקרא אני אישית נהנתי מ https://regexone.com/ יש שם תרגול חי צעד אחר צעד.
אני אישית אוהב לעבוד עם https://regex101.com/ שמסביר לך בדיוק מה עושה כל דבר שכתבת