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

أخذ رقم من جملة برمجيا

مغلق
بدأه eng_seham في 29 أبريل 2007 · 15 رد · 1,521 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أريد أخذ قيمة الخصم من جملة وهي كالتالي مثلا

الخصم : يوجد خصم 20% إذا وصت مشترياتك إلى 100علبة و10% إذا وصلت مشترياتك 50علبة

أريد البحث في هذه الجملة وأخذ فقط (20%) وأيضا (10%)

ولكم جزيل الشكر

#2

السلام عليكم

يمكن أن تكون هذه طريقة

والله أعلم

private void Form1_Load(object sender, EventArgs e)
{
  String myText = "this is a sample of text 02% a smaple of text 10% and it aims to 15% or 100  gfhg hjj if 20% ";
  string WordFound = string.Empty;
  foreach (char C in myText)
   {
	if (Equals(C, '%'))					
	 {   this.Text += myText.Substring(myText.IndexOf(C)-3, 4);  // the first % and its corresponding value
		 myText = myText.Substring(myText.IndexOf('%') + 1, myText.Length - myText.IndexOf('%')-1); // remove the pervious %  
	}
   }
}
#3

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

يمكن استخدام الـ Regular Expressions في هذا فهو أسرع ان كانت العملية تتكرر كثيرا. مثلا :

string inputString = "الخصم : يوجد خصم 20% إذا وصت مشترياتك إلى 100علبة و10% إذا وصلت مشترياتك 50علبة";

foreach (Match matX in Regex.Matches(inputString, "[0-9]+%"))
	MessageBox.Show(matX.Value);

الباترن "[0-9]+%" تعني "أي رقم من صفر حتى تسعة يتكرر مرة أو أكثر ويليه علامة %".

تم تعديل هذه المشاركة بواسطة معتز شمس في 1 مايو 2007 في 04:30

#Read

http://MoutazShams.blogspot.com

projects003.gif

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

#4

شكرا لك يا معتز

يا أيها الناس قولو لا إله إلا الله تفلحوا وتملكوا بها العرب وتذل لكم العجم وإذا آمنتم كنتم ملوكا في الجنة

#5

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

الأخ : معتز أشكر أهتمامك

ولكن انا لا أعلم ماذا تعني بالـ

Regular Expressions

ومن أين أحضر هذه المثود

Regex.Matches

حيث انني حاولت تجربة الكود ولكن لم يتعرف على هذه المثود

ولك جزيل الشكر

#6

بسم الله الرحمن الرحيم

هذه هي سلسة تعلم الـ Regular Expressions للأخ الغملاسي جزاه الله خيراً

/index.php?showtopic=77787

29_5.gif

سورة العنكبوت

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

مشروع Arabic PHP.NET

حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

سلسلة أنماط التصاميم البرمجية Desgin Patterns

سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

كنترول ASP.NET DataGrid CheckBoxColumn

كنترول ProgressBar

كنترول UltraPanel

مشروع الكنترول الأنيق (إهداء للفريق العربي)

الورش الإلكترونية IT Workshops

تعقب الأخطاء error tracing

كنترول ColorPicker لمطوري الويب

RichTextBox Control لمطوري ال ASP.Net

حمل كتاب جافا سكربت عربي

#7

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

اشتغل الكود ولكن احضر لي أخي رقم وهو 10%

إذا أردت أحضار جميع الارقام

فكيف يتم ذلك ؟؟؟

#8

السلام عليكم

لقد أحظر لك 10% لأنهاindex الأولى التي وجدها لذلك أضفت في الكود الذي كتبته التعليمات التالية ليبحث مجددا في باقي الجملة

myText = myText.Substring(myText.IndexOf('%') + 1, myText.Length - myText.IndexOf('%')-1); 
// remove the pervious %
#9

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

كتبت هذا الكود ولكن لم يحضر سوى 10%

 string myText = "الخصم : يوجد خصم 20% إذا وصت مشترياتك إلى 100علبة و10% إذا وصلت مشترياتك 50علبة";

          foreach (Match matX in Regex.Matches(myText, "[0-9]+%"))
          {
              myText = myText.Substring(myText.IndexOf('%') + 1, myText.Length - myText.IndexOf('%') - 1);
              Label3.Text = (matX.Value.ToString());
          }
#10

.

WindowsApplication1.zip

post-91400-1178195999_thumb.jpg

#11

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

إتحلت المشكلة

جزاكم الله خيرا وشكرا لكل من ساهم في المساعدة

#12

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

لو سمحتم ظهرت لدي مشكلة وهي إذا احتوى حقل الخصم على 2% فقط مثلا ولا يوجد أي حروف

ERROR : not statrt index Zero

أو إذا أحتوى هذا الحقل على أكثر من قيمة خصم بمعنى

الخصم : 20% و 5% و 15%

أرجو المساعدة ولكم جزيل الشكر

#13

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

أرجو المساعدة ولكم جزيل الشكر

#14

السلام عليكم

لقد عدلت الكود السابق وعليك فقط بتعويض الكود السابق بهذا في Form_Load

private void Form1_Load(object sender, EventArgs e)
  {
   //string myText = "الخصم : يوجد خصم 20% إذا وصت مشترياتك إلى 100علبة و 10% إذا وصلت مشترياتك 50%علبة";
   string myText = "%20 مشترياتك 10% إذا وصلت مشترياتك";
   string WordFound = string.Empty;
   int FirstIndex;
	foreach (char C in myText)
	  {
	   if (Equals(C, '%'))
	   {FirstIndex = myText.IndexOf(C);
		if (Equals(FirstIndex, 0))
		 { label1.Text += myText.Substring(FirstIndex, 3); 
		   myText = myText.Substring(myText.IndexOf('%') + 1, myText.Length - myText.IndexOf('%') - 1); // remove the pervious %  
		 }
		else
		 {
		 label1.Text += myText.Substring(FirstIndex - 3, 4);  // the first % and its corresponding value
		 myText = myText.Substring(myText.IndexOf('%') + 1, myText.Length - myText.IndexOf('%') - 1); // remove the pervious %  
		 }
	   }
	 }

 }

بإمكانك تجربت الحالتين للنص كما كان سابقا أو يبدأ بالرمز % (just comment one and keep the other )

والله أعلم

#15

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

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

جاري المحاولة

#16

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

لقد استخدمت كود شامل يشمل لي كل حالات إدخال الداتا بحيث لو أدخل المستخدم (10% - %10 - % 10 - 10 % ) أو أدخل النسبة في بداية الجملة

(20% لجميع المشتريات) وأشتغل معايا الكود والحمدلله ولكن مشكلتي ظهرت

الخصم : 20% إذا تعدى 100 علبة و %10 إذا تعدى 50 جنيه

الناتج لي : 20%

100

%10

50

ظهر لي كل الأرقام مع إنني لا أريد إظهار الـ 100 ولا الـ 50 أريد إظهار فقط النسب المئوية (20% و %10)

هـذا هو الكــود

string Dis = "";
                            LDiscount3.Text = " خصم 20% إذا وصلت مشترياتك 100 علبه و %10 إذا وصلت مشترياتك 50 علبة ";
                            string str = this.DS.Tables[0].Rows["Discount"].ToString();
                            char[] Leng = str.ToCharArray();
                             for (int s = 0; s < str.Length; s++)
                                {
                                    if (Leng == '%' || Leng == '0' || Leng == '1' || Leng == '2' || Leng == '3' || Leng == '4' || Leng == '5' || Leng == '6' || Leng == '7' || Leng == '8' || Leng == '9')
                                    {
                                        int d = s + 4;
                                        for (int j = s; j < d; j++)
                                        {
                                            if (Leng[j] == '%' || Leng[j] == '0' || Leng[j] == '1' || Leng[j] == '2' || Leng[j] == '3' || Leng[j] == '4' || Leng[j] == '5' || Leng[j] == '6' || Leng[j] == '7' || Leng[j] == '8' || Leng[j] == '9')
                                            {

                                                    Dis += Leng[j].ToString().Trim();

                                            }
                                                  s++;
                                        }

                                        Dis += "<br>";
                                    }

                                }

فأريد أعمل شيك على الـ Dis لا يجمع الأرقام إلا التي تحتوي على نسبة مئوية فقط

أرجو المساعدة ولكم جزيل الشكر

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

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