דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. סקריפט להקראת מספרים בעברית

סקריפט להקראת מספרים בעברית

מתוזמן נעוץ נעול הועבר תכנות
9 פוסטים 4 כותבים 161 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • nigunN מנותק
    nigunN מנותק
    nigun
    כתב ב נערך לאחרונה על ידי nigun
    #1

    אני מחפש את הנוסחה להמרת מספרים לטקסט מלא בעברית
    למשל 1526 = "אלף חמש מאות עשרים ושש"
    15000555 = "מאה חמישים מליון חמש מאות חמישים וחמש"
    מישהו מכיר?

    מייל: nigun@duck.com

    י clickoneC WWWW 3 תגובות תגובה אחרונה
    0
    • י מנותק
      י מנותק
      יוסף בן שמעון
      השיב לnigun ב נערך לאחרונה על ידי
      #2

      @nigun אתה מחפש נוסחה או ספריה מוכנה?

      nigunN תגובה 1 תגובה אחרונה
      0
      • nigunN מנותק
        nigunN מנותק
        nigun
        השיב ליוסף בן שמעון ב נערך לאחרונה על ידי
        #3

        @יוסף-בן-שמעון
        מה שיש יהיה טוב
        אבל אני כנראה מעדיף נוסחה, מאשר ספרייה בשפה שאני לא מכיר.

        מייל: nigun@duck.com

        י תגובה 1 תגובה אחרונה
        0
        • י מנותק
          י מנותק
          יוסף בן שמעון
          השיב לnigun ב נערך לאחרונה על ידי
          #4

          @nigun הנוסחה לכאורה ברורה, צריך להחזיק מבנה נתונים שיודע לקרוא לכל מספר שלם בשמו (מספר שלם = אלף, שבע מאות, עשרים, אחד) לנתח את המספר ולהרכיב את התוצאה הסופית, וכמובן לשקלל שינויים כמו "עשרים ואחד" במקום "עשרים אחד"

          nigunN תגובה 1 תגובה אחרונה
          1
          • nigunN מנותק
            nigunN מנותק
            nigun
            השיב ליוסף בן שמעון ב נערך לאחרונה על ידי
            #5

            @יוסף-בן-שמעון
            בדיוק
            זה לא אמור להיות משהו אדיר
            אבל כנראה מישהו כתב את זה כבר.

            אולי אני ינסה להבין מה קורה באסטריסק
            לראות איך הם עשו את זה.

            מייל: nigun@duck.com

            תגובה 1 תגובה אחרונה
            0
            • clickoneC מנותק
              clickoneC מנותק
              clickone
              השיב לnigun ב נערך לאחרונה על ידי
              #6

              @nigun יש המון דוגמאות לזה.
              בפורום בוודאות יש לזה, אבל בVB 😛 (משהו עם אקסס)
              אני אחפש עוד מעט

              אפשר כמובן להמיר את זה לאן שתרצה (GO..) אח"כ...

              אין טסט כמו פרודקשן.

              המייל שלי urivpn@gmail.com

              תגובה 1 תגובה אחרונה
              1
              • clickoneC מנותק
                clickoneC מנותק
                clickone
                כתב ב נערך לאחרונה על ידי clickone
                #7

                הנה
                https://tchumim.com/post/5410
                https://tchumim.com/assets/uploads/files/1517224421553-המרת-סכום-למילים.zip
                קרדיט ל @רחמים

                והנה עצמאי של @ארכיטקט מאותו מקום (יש שם עוד התייחסויות - כולל למרכזייה)
                https://tchumim.com/post/5411

                using System.Threading.Tasks;
                 
                namespace HtmlTemplateEngine
                {
                   public class ReplaceNumberToString
                    {
                        public string WordToSingleDigit(int Digit, bool Male, bool Base)
                        {
                            string functionReturnValue = null;
                            //    מערכים של מספרים
                            string[] SeparateMale = new string[]{"", "אחד", "שנים", "שלשה", "ארבעה", "חמשה", "ששה", "שבעה", "שמונה", "תשעה",
                            "עשרה", "עשרים", "שלשים", "ארבעים", "חמישים", "שישים", "שבעים", "שמונים", "תשעים"};
                            string[] BaseMale = new string[]{"", "אחד", "שני", "שלשת", "ארבעת", "חמשת", "ששת", "שבעת", "שמונת", "תשעת",
                            "עשרת", "עשרים", "שלשים", "ארבעים", "חמישים", "שישים", "שבעים", "שמונים", "תשעים"};
                            string[] SeparateFemale = new string[]{"", "אחת", "שתים", "שלש", "ארבע", "חמש", "שש", "שבע", "שמונה", "תשע",
                            "עשר", "עשרים", "שלשים", "ארבעים", "חמישים", "שישים", "שבעים", "שמונים", "תשעים"};
                            string[] BaseFemale = new string[]{"", "אחת", "שתי", "שלש", "ארבע", "חמש", "שש", "שבע", "שמונה", "תשע",
                            "עשר", "עשרים", "שלשים", "ארבעים", "חמישים", "שישים", "שבעים", "שמונים", "תשעים"};
                 
                           //  הואיל והמערך מכיל גם מספרים של עשרים ומעלה
                           //   לכן יש לסדר את המספר הריאלי, ולהמיר אותו למספר המתאים למערך
                            //  כאן הוא מחזיר את המספר כפי שהוא נכון לגבי המערך
                            if (Digit > 10)
                                Digit = (Digit / 10) - 1 + 10;
                 
                            if (Male == true)
                            {
                                if (Base == true) { functionReturnValue = BaseMale[Digit]; return functionReturnValue; }
                                else { functionReturnValue = SeparateMale[Digit]; return functionReturnValue; }
                            }
                            else if (Male == false)
                            {
                                if (Base == true) { functionReturnValue = BaseFemale[Digit]; return functionReturnValue; }
                                else { functionReturnValue = SeparateFemale[Digit]; return functionReturnValue; }
                 
                            }
                            return functionReturnValue;
                 
                        }
                       public string ReplaceTextCurrency(double סכום)
                        {
                            string functionReturnValue = null;
                            int שלמים = 0;
                            int אגורות = 0;
                            int עשרות_אלפים = 0;
                            string טקסט_לשלמים = null;
                            string טקסט_לעשרות_אלפים = null;
                            string טקסט_לאגורות = null;
                            string טקסט_למיליונים = null;
                            if (סכום >= 1000000 | סכום == 0) { functionReturnValue = ""; return functionReturnValue; }
                           שלמים = Convert.ToInt32(סכום);
                           // שלמים = סכום;
                 
                           אגורות = Convert.ToInt32((סכום - Convert.ToInt32(סכום)) * 100);
                            עשרות_אלפים = Convert.ToInt32((סכום - (סכום % 1000)) / 1000);
                            if (עשרות_אלפים >= 10)
                                שלמים = שלמים - (עשרות_אלפים * 1000);//Replace text
                            טקסט_לשלמים = ReplaceTextFromDigit(שלמים, true, false);
                            if (אגורות > 0)
                                טקסט_לאגורות = " ו" + ReplaceTextFromDigit(אגורות, false, false) + " אגורות";
                            if (עשרות_אלפים > 10)
                                טקסט_לעשרות_אלפים = ReplaceTextFromDigit(עשרות_אלפים, true, true);
                            if (עשרות_אלפים >= 10)
                                טקסט_לעשרות_אלפים = טקסט_לעשרות_אלפים + (עשרות_אלפים == 10 ? "עשרת אלפים" : " אלף") + (שלמים > 0 ? " ו" : " ");
                 
                            functionReturnValue = טקסט_לעשרות_אלפים + טקסט_לשלמים + (שלמים + עשרות_אלפים > 0 ? " שקלים" : "") + טקסט_לאגורות;
                            return functionReturnValue;
                 
                        }
                 
                        public string ReplaceTextFromDigit(int מספר, bool Male, bool Base)
                        {
                            string functionReturnValue = null;
                         //   מחזיר טקסט ממספר עד לסכום של 9999 אלפים צריכים להיות מטופלים בנפרד בפונקציית המטבע
                          //-----------------------------   ERROR: Not supported in C#: OnErrorStatement
                 
                 
                            if (מספר == 0) { functionReturnValue = ""; return functionReturnValue; }
                            string טקסט_ליחידות = null;
                            string טקסט_לעשרות = null;
                            string טקסט_לעשרות_ויחידות = null;
                            string טקסט_למאות = null;
                            string טקסט_לאלפים = null;
                            string טקסט_לעשרות_אלפים = null;
                            string טקסט_לאגורות = null;
                            string טקסט_לשלמים = null;
                            int יחידות = 0;
                            int עשרות = 0;
                            int מאות = 0;
                            int אלפים = 0;
                            int עשרות_אלפים = 0;
                            int יחידות_אגורות = 0;
                            int עשרות_אגורות = 0;
                           // מפרק את המספרים לערכים הדרושים
                           // מכין את הערכים המספריים הדרושים
                            יחידות = מספר % 10;
                            עשרות = מספר % 100 - יחידות;
                            מאות = (מספר % 1000 - עשרות - יחידות) / 100;
                            אלפים = (מספר - (מספר % 1000)) / 1000;
                 
                           // מכין את הטקסט הדרוש
                 
                          //  עושה שימוש בפונקציה מודולרית שנותנת ערכים למספרים בודדים
                 
                         //   מכין את הטקסט לעשרות ויחידות
                            if (יחידות + עשרות < 10)
                            {
                                טקסט_לעשרות_ויחידות = WordToSingleDigit(יחידות, Male, Base);
                 
                 
                            }
                            else if (יחידות + עשרות == 10)
                            {
                                טקסט_לעשרות_ויחידות = WordToSingleDigit(יחידות + עשרות, Male, false);
                 
                            }
                            else if (יחידות + עשרות > 10 & יחידות + עשרות < 20)
                            {
                                טקסט_לעשרות_ויחידות = WordToSingleDigit(יחידות, Male, false);
                                טקסט_לעשרות_ויחידות = טקסט_לעשרות_ויחידות + " " + WordToSingleDigit(עשרות, Male ^ true, false);
                 
                            }
                            else if (יחידות + עשרות >= 20)
                            {
                                טקסט_ליחידות = WordToSingleDigit(יחידות, Male, false);
                                טקסט_לעשרות = WordToSingleDigit(עשרות, Male, true);
                                טקסט_לעשרות_ויחידות = טקסט_לעשרות + (יחידות > 0 ? " ו" : "") + טקסט_ליחידות;
                            }
                            if (עשרות + יחידות > 9 & עשרות + יחידות < 21 & מאות > 0)
                                טקסט_לעשרות_ויחידות = "ו" + טקסט_לעשרות_ויחידות;
                 
                          //  מכין את הטקסט למאות
                            if (מאות == 1)
                            {
                                טקסט_למאות = "מאה";
                            }
                            else if (מאות == 2)
                            {
                                טקסט_למאות = "מאתיים";
                            }
                            else if (מאות > 2)
                            {
                                טקסט_למאות = WordToSingleDigit(מאות, false, true) + " מאות";
                            }
                 
                          //  מכין את הטקסט לאלפים
                 
                            if (אלפים == 1)
                            {
                                טקסט_לאלפים = "אלף ";
                            }
                            else if (אלפים == 2)
                            {
                                טקסט_לאלפים = "אלפיים ";
                            }
                            else if (אלפים > 2 & אלפים < 10)
                            {
                                טקסט_לאלפים = WordToSingleDigit(אלפים, Male, true) + " אלפים";
                            }
                 
                           // מכין את הטקסטים כראוי להצגה על המסך עם ווי חיבור וכיוב
                            if (אלפים > 0 & עשרות + יחידות == 0 & מאות > 0)
                                טקסט_לאלפים = טקסט_לאלפים + " ו";
                            if (אלפים > 0 && ((עשרות + יחידות > 0) || (מאות > 0)) )//&& !(טקסט_לאלפים // ERROR: Unknown binary operator Like
                              טקסט_לאלפים = טקסט_לאלפים + " ";
                 
                            טקסט_למאות = טקסט_למאות + ((עשרות + יחידות )> 0 ? " " : "") + ((אלפים > 0 | מאות > 0) & ((עשרות + יחידות < 10) & (עשרות + יחידות > 0)) ? "ו" : "");
                            string טקסט_לפני_הסרת_רווח = null;
                            טקסט_לפני_הסרת_רווח = טקסט_לאלפים + טקסט_למאות + טקסט_לעשרות_ויחידות;
                        //    if (טקסט_לפני_הסרת_רווח // ERROR: Unknown binary operator Like
                        //)
                        //        טקסט_לפני_הסרת_רווח = Strings.Right(טקסט_לפני_הסרת_רווח, Strings.Len(טקסט_לפני_הסרת_רווח) - 1);
                            functionReturnValue = טקסט_לפני_הסרת_רווח;
                           return functionReturnValue;
                 
                        }
                    }
                }
                
                

                אין טסט כמו פרודקשן.

                המייל שלי urivpn@gmail.com

                תגובה 1 תגובה אחרונה
                4
                • WWWW מנותק
                  WWWW מנותק
                  WWW
                  השיב לnigun ב נערך לאחרונה על ידי
                  #8

                  @nigun אני חושב שיש לי בPHP (נראה לי המקור מ @שואף, אני תרגמתי לשפות נוספות), יעזור לך?

                  WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                  nigunN תגובה 1 תגובה אחרונה
                  0
                  • nigunN מנותק
                    nigunN מנותק
                    nigun
                    השיב לWWW ב נערך לאחרונה על ידי
                    #9

                    @WWW
                    אני צריך את זה בשביל IVR
                    אני צריך רק להבין את הנוסחה
                    ולהמיר את זה לGO
                    אני ינסה קודם לקרוא את הסקריפטים לעיל.

                    מייל: nigun@duck.com

                    תגובה 1 תגובה אחרונה
                    0

                    בא תתחבר לדף היומי!
                    • התחברות

                    • אין לך חשבון עדיין? הרשמה

                    • התחברו או הירשמו כדי לחפש.
                    • פוסט ראשון
                      פוסט אחרון
                    0
                    • דף הבית
                    • קטגוריות
                    • פוסטים אחרונים
                    • משתמשים
                    • חיפוש
                    • חוקי הפורום