السلام عليكم ورحمة الله وبركاته
أريد أخذ قيمة الخصم من جملة وهي كالتالي مثلا
الخصم : يوجد خصم 20% إذا وصت مشترياتك إلى 100علبة و10% إذا وصلت مشترياتك 50علبة
أريد البحث في هذه الجملة وأخذ فقط (20%) وأيضا (10%)
ولكم جزيل الشكر
السلام عليكم ورحمة الله وبركاته
أريد أخذ قيمة الخصم من جملة وهي كالتالي مثلا
الخصم : يوجد خصم 20% إذا وصت مشترياتك إلى 100علبة و10% إذا وصلت مشترياتك 50علبة
أريد البحث في هذه الجملة وأخذ فقط (20%) وأيضا (10%)
ولكم جزيل الشكر
السلام عليكم
يمكن أن تكون هذه طريقة
والله أعلم
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 %
}
}
}وعليكم السلام ورحمة الله وبركاته.
يمكن استخدام الـ 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
شكرا لك يا معتز
يا أيها الناس قولو لا إله إلا الله تفلحوا وتملكوا بها العرب وتذل لكم العجم وإذا آمنتم كنتم ملوكا في الجنة
السلام عليكم ورحمة الله وبركاته
الأخ : معتز أشكر أهتمامك
ولكن انا لا أعلم ماذا تعني بالـ
Regular Expressions
ومن أين أحضر هذه المثود
Regex.Matches
حيث انني حاولت تجربة الكود ولكن لم يتعرف على هذه المثود
ولك جزيل الشكر
بسم الله الرحمن الرحيم
هذه هي سلسة تعلم الـ Regular Expressions للأخ الغملاسي جزاه الله خيراً

سورة العنكبوت
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
سلسلة أنماط التصاميم البرمجية Desgin Patterns
سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
كنترول ASP.NET DataGrid CheckBoxColumn
مشروع الكنترول الأنيق (إهداء للفريق العربي)
الورش الإلكترونية IT Workshops
كنترول ColorPicker لمطوري الويب
السلام عليكم ورحمة الله وبركاته
اشتغل الكود ولكن احضر لي أخي رقم وهو 10%
إذا أردت أحضار جميع الارقام
فكيف يتم ذلك ؟؟؟
السلام عليكم ورحمة الله وبركاته
كتبت هذا الكود ولكن لم يحضر سوى 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());
}السلام عليكم ورحمة الله وبركاته
إتحلت المشكلة
جزاكم الله خيرا وشكرا لكل من ساهم في المساعدة
السلام عليكم ورحمة الله وبركاته
لو سمحتم ظهرت لدي مشكلة وهي إذا احتوى حقل الخصم على 2% فقط مثلا ولا يوجد أي حروف
ERROR : not statrt index Zero
أو إذا أحتوى هذا الحقل على أكثر من قيمة خصم بمعنى
الخصم : 20% و 5% و 15%
أرجو المساعدة ولكم جزيل الشكر
السلام عليكم ورحمة الله وبركاته
أرجو المساعدة ولكم جزيل الشكر
السلام عليكم
لقد عدلت الكود السابق وعليك فقط بتعويض الكود السابق بهذا في 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 )
والله أعلم
السلام عليكم ورحمة الله وبركاته
جزاكم الله خيرا
جاري المحاولة
السلام عليكم ورحمة الله وبركاته
لقد استخدمت كود شامل يشمل لي كل حالات إدخال الداتا بحيث لو أدخل المستخدم (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 لا يجمع الأرقام إلا التي تحتوي على نسبة مئوية فقط
أرجو المساعدة ولكم جزيل الشكر
هذا الموضوع مغلق.