קוד C# להמרת מספר למספר עברי
-
קוד C# להמרת מספר למספר עברי - מקווה שיהיה שימושי למישהו.
using System; public class ClassHebrewNumbering { public static string ToHebrewNumber(int number) { if (number < 1) { throw new ArgumentOutOfRangeException("המספר צריך להיות מעל 1"); } string hebrewNumber = ""; while (number >= 400) { hebrewNumber += "ת"; number -= 400; } // Handle numbers 100-390 if (number >= 300) { hebrewNumber += "ש"; number -= 300; } else if (number >= 200) { hebrewNumber += "ר"; number -= 200; } else if (number >= 100) { hebrewNumber += "ק"; number -= 100; } // Handle numbers 10-90 if (number >= 10) { int tensIndex = (number / 10) - 1; // Subtract 1 to match array indexing hebrewNumber += Tens[tensIndex]; number -= (tensIndex + 1) * 10; // Add 1 back for indexing } // Handle numbers 1-9 if (number > 0) { hebrewNumber += Units[number - 1]; // Subtract 1 to match array indexing } hebrewNumber = hebrewNumber.Replace("יה", "טו"); hebrewNumber = hebrewNumber.Replace("יו", "טז"); //hebrewNumber.Replace("רעב", "ערב"); //hebrewNumber.Replace("רעד", "עדר"); //hebrewNumber.Replace("רע", "ער"); //hebrewNumber.Replace("רצח", "רחצ"); //hebrewNumber.Replace("תשמד", "תדשם"); //hebrewNumber.Replace("שמד", "שדמ"); //hebrewNumber.Replace("שד", "דש"); return hebrewNumber; } private static readonly string[] Units = { "א", "ב", "ג", "ד", "ה", "ו", "ז", "ח", "ט" }; private static readonly string[] Tens = { "י", "כ", "ל", "מ", "נ", "ס", "ע", "פ", "צ", "ק" }; } -
יש אצלי קוד שכולל שני כיוונים, אבל לא מטפל במקרים מיוחדים כמו שדמ:
public static class HebNumber { static Dictionary<int, string> HebNumbers = new Dictionary<int, String> { {400, "ת"}, {300, "ש"}, {200, "ר"}, {100, "ק"}, {90, "צ"}, {80, "פ"}, {70, "ע"}, {60, "ס"}, {50, "נ"}, {40, "מ"}, {30, "ל"}, {20, "כ"}, {19, "יט"}, {18, "יח"}, {17, "יז"}, {16, "טז"}, {15, "טו"}, {10, "י"}, {9, "ט"}, {8, "ח"}, {7, "ז"}, {6, "ו"}, {5, "ה"}, {4, "ד"}, {3, "ג"}, {2, "ב"}, {1, "א"}, }; public static int ToNumber(this string numHeb) { int last = 0; int total = 0; while (numHeb.Length > 0) { var next = HebNumbers.Where(v => numHeb.EndsWith(v.Value)).OrderBy(v => v.Key).LastOrDefault(); if (next.Key <= last) return -1; last = next.Key; total += last; numHeb = numHeb.Remove(numHeb.Length - next.Value.Length); } return total; } public static string ToHebNumber(this int num) { string result = ""; while (num > 0) { var key = HebNumbers.SkipWhile(pair => pair.Key > num).First(); result += key.Value; num-=key.Key; } return result; } } -
פוסט זה נמחק!
-
@meir-lamdan פה בפורום יש קוד הרבה יותר טוב
https://tchumim.com/post/1158.הקוד שאליו הפנית ואותו תרגמת אינו טוב (למשל, הוא נכשל מעל 999), וגם הוא בכלל לא בC# למרות שהשאלה שם היא על C#.
אני גם מתפלא למה בחרת בו ולא בקוד של התשובה שהתקבלה שיש לה 5 הצבעות (וענה אותה מישהו עם 111K מוניטין).
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות