الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

function بتكشف ان كان ال text عباره عن رقم int ولا لأ

مغلق
بدأه mohammed_elqupany في 13 نوفمبر 2006 · 6 رد · 927 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

في البداية انا كنت بعمل موقع بال asp بستقبل فيه من المستخدم قيم int من خلال textbox فكان من الممكن يدخللي قيم مش من نوع int لذلك انا عملت الدالة دي علشان اتأكد بيها ان ما ادخلة المستخدم من نوع int

وها هي الدالة بين ايديكم اتمني تفيد حد ولو حد عنده اضافه يقول

bool IsInt(string x)
	{
		string y = "0123456789";
		int flag = 0;
		int l = 0;
		for (int i = 0; i < x.Length; i++)
		{
			for (int j = 0; j < y.Length; j++)
			{
				if (x == y[j])
				{
					flag++;
					break;
				}
			}
			if (flag != 0)
			{
				l++;
				flag = 0;
			}
		}
		if (l == x.Length)
			return true;
		else
			return false;
	}

طبعا انا عارف انك ببساطه ممكن تعمل parse للقيمة المدخلة كــ int بين try & catch ولو في اي exption ترجع خطأ وخلاص بس دي حاجه تنشيط كده للذهن.

شكراااااااا

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

.

.

تم تعديل هذه المشاركة بواسطة mohammed_elqupany في 13 نوفمبر 2006 في 12:00

#2

ألف شكر

جزاكم الله خيرا

Have fun ;) ;)

#3

صحيح أن الكود (Not efficient)

لكنه هم يحتوي على بعض الثغرات

أولها أنك ما استفدت من flag وهي اللي من المفروض أنها أتكون أهم شي وتحذف (l) اللي ماليها داعي

يعني باختصار المفروض الكود يكون :-

bool IsInt(string x)
	{
		string y = "0123456789";
		int flag = 0;
		for (int i = 0; i < x.Length; i++)
		{
			for (int j = 0; j < y.Length; j++)
			{
				if (x == y[j])
				{
					flag++;
					break;
				}
			}
			if (flag != 0)
				flag = 0;
			else
				return false;

		}

		return true;
	}

وهذا كودي بدون أستخدام try & catch

		public static bool IsInt(string x)
		{
			for (int i = 0; i < x.Length; i++)
				if (!Char.IsDigit(x, i))
					return false;
			return true;
		}

والسلام

#4

لماذا لا تستخدم

int.TryParse

و التي تأخذ الstring و تعطي boolean و يوجد فيها out parameter تجد في الinteger value في حالة كان النص رقم فعلاً

و أيضاً يوجد

float.TryParse و double.TryParse و .........

بالطبع هذا في .net 2.0 ماعدا double.TryParse فهي موجودة منذ .net 1.0

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#5

السلام عليكم

للفائدة ايضا هذا الفنكشن لتحويل الstring الى double

double dVal(string str)
{
	str=str.Trim();
	long ret_val=0;
	int start=(str[0]=='-'?1:0);
	int sign=start==0?1:-1;
	bool dotflag=false;
	int decvalue=0,decvalue_len=0;
	char chr;
	for(int i=start;i<str.Length;i++)
	{
	 chr=str;
	 if(chr>=48 && chr<=57)
		{	  
		if(!dotflag)   
			ret_val=(ret_val*10)+(chr-48);   
		else
		  {decvalue=(decvalue*10)+(chr-48);
		   decvalue_len++;
		  }	 
		}
		else
		{if(chr=='.') 
		  {if(dotflag)return 0;
		   dotflag=true;}
		 else /*if (chr!='\0')*/
		   return 0;
		} 
	}
	return ((double)(ret_val)+ 
		   (double)(decvalue/(Math.Pow(10,decvalue_len))))*sign;
}

سبحانك اللهم وبحمدك أشهد ان لا اله الا أنت

أستغفرك وأتوب اليك

الهم صلي وسلم وبارك على سيدنا وحبيبنا محمد

#6
اقتباس
في البداية انا كنت بعمل موقع بال asp بستقبل فيه من المستخدم قيم int من خلال textbox فكان من الممكن يدخللي قيم مش من نوع int لذلك انا عملت الدالة دي علشان اتأكد بيها ان ما ادخلة المستخدم من نوع int

اذا كان التطبيق ASP .NET Web Application فأظن أن الأصح هو استخدام الـ Validation Controls حيث أنها مخصصه لهذه الأمور, فيوجد منهن من تقوم بمقارنة الـ Input بـ Data Type معين ومن تختبر وقوعه بين قيمتين والخ, واستخدامهن آمن ويوفر الجهد والوقت !

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

#7

فعلا الاستاذ معتز كلامه مظبوط في حاله لو كانت ويب ابليكيشن

وفوق كل ذي علم عليم

والله اعلم

الملك ------>محمد ابو تريكة

abutreika.jpg

على اسم مصر التاريخ يقدر يقول ما شاء

أنا مصر عندي أحب وأجمل الأشياء

باحبها وهي مالكه الأرض شرق وغرب

وباحبها وهي مرميه جريحة حرب

باحبها بعنف وبرقة وعلى استحياء

واكرهها وألعن أبوها بعشق زي الداء

واسيبها واطفش في درب وتبقى هي ف درب

وتلتفت تلقيني جنبها في الكرب

والنبض ينفض عروقي بألف نغمة وضرب

على اسم مصر

هذا الموضوع مغلق.

مواضيع مشابهة