تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
EnglishToArabicNumber
#1
بسم الله الرحمن الرحيم

وصلى الله على محمد وآله الطاهرين

السلام عليكم ورحمة الله وبركاته

سنتعلم في هذا الموضوع كيفية تحويل الارقام الانكليزية الى ارقام عربية وايضا كيفية تحول الرقم الى صيغة معينة كالاسعار بالتحديد


في البدابة أنشيء مشروع جديد من نوع Class Library سواء كنت مبرمج VB او #C , سم المشروع بأسم EnNumToArNum

الان من الـ Solution Explorer غير اسم الـClass1 الى EnToAr

اولا اضف مجالات الاسماء التالية:


#C
كود :
[color=#0000FF]using[/color][color=#000000] System;[/color]
[color=#0000FF]using[/color][color=#000000] System.Globalization;[/color]
[color=#0000FF]using[/color][color=#000000] System.Text;[/color]

VB
كود :
[color=#0000FF]Imports[/color][color=#000000] System[/color]
[color=#0000FF]Imports[/color][color=#000000] System.Globalization[/color]
[color=#0000FF]Imports[/color][color=#000000] System.Text[/color]

ثم اضف الدالة التالية:

#C
كود :
[color=#0000FF]private[/color] [color=#0000FF]static[/color] [color=#0000FF]string[/color][color=#000000] Choosing([/color][color=#0000FF]string[/color][color=#000000] ch, [/color][color=#0000FF]double[/color][color=#000000] input,[/color][color=#2B91AF]IFormatProvider[/color][color=#000000] culture)[/color]
[color=#000000]        {[/color]
            [color=#0000FF]var[/color][color=#000000] output = [/color][color=#0000FF]new[/color] [color=#2B91AF]StringBuilder[/color][color=#000000]();[/color]

            [color=#0000FF]var[/color][color=#000000] nums = ch == [/color][color=#A31515]"1"[/color][color=#000000] ? input.ToString() : input.ToString([/color][color=#A31515]"C"[/color][color=#000000], culture);[/color]

            [color=#0000FF]foreach[/color][color=#000000] ([/color][color=#0000FF]var[/color][color=#000000] c [/color][color=#0000FF]in[/color][color=#000000] nums)[/color]
[color=#000000]            {[/color]
                [color=#0000FF]if[/color][color=#000000] ([/color][color=#0000FF]char[/color][color=#000000].IsDigit(c))[/color]
[color=#000000]                {[/color]
                    [color=#0000FF]for[/color][color=#000000] ([/color][color=#0000FF]var[/color][color=#000000] i = 0; i < EnDigits.Length; i++)[/color]
[color=#000000]                    {[/color]
                        [color=#0000FF]if[/color][color=#000000] (c != EnDigits[i]) [/color][color=#0000FF]continue[/color][color=#000000];[/color]
[color=#000000]                        output.Append(ArDigits[i]);[/color]
[color=#000000]                    }[/color]
[color=#000000]                }[/color]
                [color=#0000FF]else[/color]
[color=#000000]                {[/color]
[color=#000000]                    output.Append(c);[/color]
[color=#000000]                }[/color]
[color=#000000]            }[/color]

            [color=#0000FF]return[/color][color=#000000] output.ToString();[/color]
[color=#000000]        }[/color]


VB
كود :
[color=#0000FF]Private[/color] [color=#0000FF]Shared[/color] [color=#0000FF]Function[/color][color=#000000] Choosing(ch [/color][color=#0000FF]As[/color] [color=#0000FF]String[/color][color=#000000], input [/color][color=#0000FF]As[/color] [color=#0000FF]Double[/color][color=#000000], culture [/color][color=#0000FF]As[/color] [color=#2B91AF]IFormatProvider[/color][color=#000000]) [/color][color=#0000FF]As[/color] [color=#0000FF]String[/color]
            [color=#0000FF]Dim[/color][color=#000000] output = [/color][color=#0000FF]New[/color] [color=#2B91AF]StringBuilder[/color][color=#000000]()[/color]

            [color=#0000FF]Dim[/color][color=#000000] nums = [/color][color=#0000FF]If[/color][color=#000000](ch = [/color][color=#A31515]"1"[/color][color=#000000], input.ToString(), input.ToString([/color][color=#A31515]"C"[/color][color=#000000], culture))[/color]

            [color=#0000FF]For[/color] [color=#0000FF]Each[/color][color=#000000] c [/color][color=#0000FF]In[/color][color=#000000] nums[/color]
                [color=#0000FF]If[/color] [color=#0000FF]Char[/color][color=#000000].IsDigit(c) [/color][color=#0000FF]Then[/color]
                    [color=#0000FF]For[/color][color=#000000] i [/color][color=#0000FF]As[/color] [color=#0000FF]Integer[/color][color=#000000] = 0 [/color][color=#0000FF]To[/color][color=#000000] EnDigits.Length - 1[/color]
                        [color=#0000FF]If[/color][color=#000000] c <> EnDigits(i) [/color][color=#0000FF]Then[/color]
                            [color=#0000FF]Continue For[/color]
                        [color=#0000FF]End[/color] [color=#0000FF]If[/color]
[color=#000000]                        output.Append(ArDigits(i))[/color]
                    [color=#0000FF]Next[/color]
                [color=#0000FF]Else[/color]
[color=#000000]                    output.Append(c)[/color]
                [color=#0000FF]End[/color] [color=#0000FF]If[/color]
            [color=#0000FF]Next[/color]

            [color=#0000FF]Return[/color][color=#000000] output.ToString()[/color]

        [color=#0000FF]End[/color] [color=#0000FF]Function[/color]

شرح الكود:

في البداية يتم تعريف متغير من الفئة StringBuilder
ثم يتم المقارنة هل المتغير ch المرسل من قبل الدالتين 1 أم 2؟
اذا 1 أي يتم تحويل الرقم الى رقم عربي بدون تغيير صيغة الرقم (يعني بدون تحويلها الى صيغة السعر)
اذا 2 أي يتم تحويل الرقم الى رقم عربي مع تغيير صيغة الرقم الى صيغة سعر طبعا في هذه الحالة المستخدم سوف يختار صيغة السعر حسب دولته كما سنرى لاحقا
والوظيفة الرئيسية لهذه الدالة هي المقارنة بين الرقم (الانكليزي) المدخل مع الرقم الانكليزي المخزون في المتغير EnDigit وبالتالي يتم جلب الرقم العربي من المتغير ArDigit عن طريق موقع الرقم الانكليزي في المتغير EnDigit

توضيح:
فرضا المدخل يحتوي على الرقم 2 لذا حسب الترتيب فان موقع الرقم 2 هي 2 لذا سيتم المقارنة بالشكل التالي

PHP كود :
Endigi[2]=='2'
output+=ArDigit[2


وأخيرا أضف دالتين بنفس الاسم بالشكل التالي:

#C
كود :
[color=#0000FF]public[/color] [color=#0000FF]static[/color] [color=#0000FF]string[/color][color=#000000] EnToArNumber([/color][color=#0000FF]double[/color][color=#000000] input)[/color]
[color=#000000]       {[/color]
           [color=#0000FF]return[/color][color=#000000] Choosing([/color][color=#A31515]"1"[/color][color=#000000], input, [/color][color=#0000FF]null[/color][color=#000000]);[/color]
[color=#000000]       }[/color]

        [color=#0000FF]public[/color] [color=#0000FF]static[/color] [color=#0000FF]string[/color][color=#000000] EnToArNumber([/color][color=#0000FF]double[/color][color=#000000] input, [/color][color=#2B91AF]CultureInfo[/color][color=#000000] culture)[/color]
[color=#000000]        {[/color]
            [color=#0000FF]return[/color][color=#000000] Choosing([/color][color=#A31515]"2"[/color][color=#000000], input, culture);[/color]
[color=#000000]        }[/color]

VB
كود :
[color=#0000FF]Public[/color] [color=#0000FF]Shared[/color] [color=#0000FF]Function[/color][color=#000000] EnToArNumber(input [/color][color=#0000FF]As[/color] [color=#0000FF]Double[/color][color=#000000]) [/color][color=#0000FF]As[/color] [color=#0000FF]String[/color]
            [color=#0000FF]Return[/color][color=#000000] Choosing([/color][color=#A31515]"1"[/color][color=#000000], input, [/color][color=#0000FF]Nothing[/color][color=#000000])[/color]
        [color=#0000FF]End[/color] [color=#0000FF]Function[/color]

        [color=#0000FF]Public[/color] [color=#0000FF]Shared[/color] [color=#0000FF]Function[/color][color=#000000] EnToArNumber(input [/color][color=#0000FF]As[/color] [color=#0000FF]Double[/color][color=#000000], culture [/color][color=#0000FF]As[/color] [color=#2B91AF]CultureInfo[/color][color=#000000]) [/color][color=#0000FF]As[/color] [color=#0000FF]String[/color]
            [color=#0000FF]Return[/color][color=#000000] Choosing([/color][color=#A31515]"2"[/color][color=#000000], input, culture)[/color]
        [color=#0000FF]End[/color] [color=#0000FF]Function[/color]

الى هنا وبفضل الله انتهينا من عمل ملف DLL ,الان اعمل Build للمشروع وسينتج ملف باسم EnNumToArNum.dll في مخرجات المشروع

طريقة استخدام الملف:

طبعا افتح مشروع جديد من نوع Windows Application وسمه ما شئت سواء كنت مبرمج #C او VB

ثم اضف ملف الـdll عن طريق الـSolution Explorer ثم كلك يمين على اسم المشروع ولي على اسم الSolution ومن ثم AddReference

بعد ما تضيف الملف أضفه الى الكود بالشكل التالي:

#C
كود :
[color=#0000FF]using[/color][color=#000000] EnNumToArNum;[/color]

اما لمبرمجي VB فلا يحتاج اضافة مجال الاسماء الى الكود ,على كل حال يكون بهذه الطريقة:

VB
كود :
[color=#0000FF]Imports[/color][color=#000000] EnNumToArNum[/color]

أما طريقة استخدام الدالة

اولا: بدون تحويل الرقم الى صيغة السعر:


#C
كود :
[color=#000000]txtTotalPrice.Text = [/color][color=#2B91AF]EnToAr[/color][color=#000000].EnToArNumber(44556);[/color]

VB
كود :
[color=#000000]txtTotalPrice.Text = [/color][color=#2B91AF]EnToAr[/color][color=#000000].EnToArNumber(112434)[/color]

ثانيا: تحويل الرقم مع تحديد صيغة السعر حسب البلد

#C
كود :
[color=#000000]txtTotalPrice.Text = [/color][color=#2B91AF]EnToAr[/color][color=#000000].EnToArNumber(99777,[/color][color=#0000FF]new[/color] [color=#2B91AF]CultureInfo[/color][color=#000000]([/color][color=#A31515]"AR-IQ"[/color][color=#000000]));[/color]

VB
كود :
[color=#000000]txtTotalPrice.Text = [/color][color=#2B91AF]EnToAr[/color][color=#000000].EnToArNumber(345533, [/color][color=#0000FF]New[/color] [color=#2B91AF]CultureInfo[/color][color=#000000]([/color][color=#A31515]"AR-IQ"[/color][color=#000000]))[/color]

طبعا ملاحظة اخيرة لم أضف المتغيرات العامة لان الاعدادات في المنتدى لا يقبل الارقام العربية

في انتظار ملاحظاتكم ولا تنسوني و والدي من صالح دعواتكم

ملف الـ dll في المرفقات



الملفات المرفقة
.zip   EnNumToArNum.zip (الحجم : 2.12 ك ب / التحميلات : 60)
الرد }}}}
تم الشكر بواسطة:
#2
قصدك الهندية :d

ارقامنا العربية اخذوها الانجليز ههههه


متألق بمواضيعك اخي سجاد وتأتي بالجديد دائما

وفقك الله
الرد }}}}
تم الشكر بواسطة:
#3
نعم الهنديةSmile

ههههههههه ما باليد حيلة

اخوية جربت الملف؟

جرب واعطيني خبر.
الرد }}}}
تم الشكر بواسطة:
#4
sajad كتب :نعم الهنديةSmile

ههههههههه ما باليد حيلة

اخوية جربت الملف؟

جرب وقل واعطيني خبر.

نعم جربته ونجح :d

PHP كود :
double enNumber Convert.ToDouble("1.45356");
            
MessageBox.Show(EnNumToArNum.EnToAr.EnToArNumber(enNumber)); //١.٤٥٣٥٦ 

ماشاء الله عليك
الرد }}}}
تم الشكر بواسطة:
#5
الحمد لله شكرا لك اخي العزيز
الرد }}}}
تم الشكر بواسطة:
#6
Sajad كتب :نعم الهنديةSmile

ههههههههه ما باليد حيلة

اخوية جربت الملف؟

جرب واعطيني خبر.

شكرا لردك أخي الكريم
أولا أنا محتار كيف يسمي الإخوة الأكارم أرقامنا العربية بالأرقام الإنجليزية ويسمون الأرقام الهندية بالأرقام العربية
اعلموا أيها الأفاضل أن الغرب ليس له أرقام وأكرر الغرب كله ليس له أرقام فهم يستعملون الأرقام العربية
أما إخوتنا في المشرق العربي فهم يستعملون الأرقام الهندية ويعتقدون أنها ارقام عربية
إن الحضارة العربية الاسلامية هي أساس الحضارة الغربية ولولا أرقامنا ما كانوا ليصلوا إلى ما وصلوا إليه
لكننا أصبحا الآن أمة جاهلة تتناحر على الكراسي والملك وتركت التقدم والرقي
وانظروا ما يحدث حاليا: صراعات دموية وتحطيم لكل مكتسبات الأمة بدعوى الجهاد ههههه
تركوا اسرائيل تعبث في فلسطين والحكام على كراسيهم منكبين وجهاد في قتل المسلمين في كل بقاع العالم ، هل هذا جهاد؟
إن الله حرم قتل المسلم وحرم قتل النفس البشرية عامة إلا بالحق
فكيف بالجماعات التكفيرية تعث فسادا في الأرض، هل فعلا ما يقومون به جهاد؟
إن معظم هؤلاء القوم جهلة ولا يحسنون أن شيء ونتيجة لحقدهم الشديد على أمة محمد ضلى الله عليه وسلم ، وتناسهم أن المسلم دمه وعرضه وماله حرام ، فنطقه بالشهادة تعصمه من القتل، فما بال هؤلاء الجهلة المأجورين يقتلون أبناء دينهم وأبناء جلدتهم بغير حق؟
الرد }}}}
تم الشكر بواسطة:


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم