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

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

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

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


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

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

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


#C
PHP كود :
using System;
using System.Globalization;
using System.Text

VB
PHP كود :
Imports System
Imports System
.Globalization
Imports System
.Text 

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

#C
PHP كود :
private static string Choosing(string chdouble input,IFormatProvider culture)
 
       {
 
           var output = new StringBuilder();

 
           var nums ch == "1" input.ToString(CultureInfo.InvariantCulture) : input.ToString("C"culture);

 
           foreach (var c in nums)
 
           {
 
               if (char.IsDigit(c))
 
               {
 
                   for (var 0EnDigits.Lengthi++)
 
                   {
 
                       if (!= EnDigits[i]) continue;
 
                       output.Append(ArDigits[i]);
 
                   }
 
               }
 
               else
                
{
 
                   output.Append(c);
 
               }
 
           }

 
           return output.ToString();
 
       


VB
PHP كود :
Private Shared Function Choosing(ch As Stringinput As Doubleculture As IFormatProvider) As String
            Dim output 
= New StringBuilder()

 
           Dim nums = If(ch "1"input.ToString(), input.ToString("C"culture))

 
           For Each c In nums
                If Char
.IsDigit(cThen
                    For i 
As Integer 0 To EnDigits.Length 1
                        If c 
<> EnDigits(iThen
                            Continue 
For
 
                       End If
 
                       output.Append(ArDigits(i))
 
                   Next
                Else
                    output
.Append(c)
 
               End If
 
           Next

            Return output
.ToString()

 
       End Function 

شرح الكود:

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

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

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


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

#C
PHP كود :
public static string EnToArNumber(double input)
 
      {
 
          return Choosing("1"inputnull);
 
      }

 
       public static string EnToArNumber(double inputCultureInfo culture)
 
       {
 
           return Choosing("2"inputculture);
 
       

VB
PHP كود :
Public Shared Function EnToArNumber(input As Double) As String
            Return Choosing
("1"inputNothing)
 
       End Function

 
       Public Shared Function EnToArNumber(input As Doubleculture As CultureInfo) As String
            Return Choosing
("2"inputculture)
 
       End Function 

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

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

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

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

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

#C


PHP كود :
usingr EnNumToArNum


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

VB
كود :
Imports EnNumToArNum

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

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


#C
كود :
colotxtTotalPrice.Text = EnToAr.EnToArNumber(44556);

VB
كود :
txtTotalPrice.Text = EnToAr.EnToArNumber(112434)

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

#C
كود :
ctxtTotalPrice.Text = EnToAr.EnToArNumber(99777,newCultureInfo("AR-IQ"));

VB
كود :
txtTotalPrice.Text = EnToAr.EnToArNumber(345533, New CultureInfo("AR-IQ"))

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

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

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


الملفات المرفقة
.zip   EnNumToArNum.zip (الحجم : 2.12 ك ب / التحميلات : 104)
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
EnglishToArabicNumber - بواسطة Sajad - 13-08-13, 07:43 PM
RE: EnglishToArabicNumber - بواسطة AboBattal - 04-10-24, 02:33 AM
EnglishToArabicNumber - بواسطة Sajad - 13-08-13, 08:37 PM
EnglishToArabicNumber - بواسطة Sajad - 13-08-13, 10:13 PM
EnglishToArabicNumber - بواسطة عبد الله190_mybb_import8133 - 01-08-14, 02:29 PM
RE: EnglishToArabicNumber - بواسطة salamandal - 04-10-24, 12:08 PM

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


يقوم بقرائة الموضوع: