PDA

View Full Version : بدست اوردن تمام رشته های بین دو رشته



بیتا حکمت
شنبه 03 مرداد 1394, 18:15 عصر
سلام ، من این کد رو برای بدست آوردن رشته ای ما بین دو رشته نوشتم

var input = " دانشگاه باید دانشگاه خوبی باشد ، دانشگاه باید محل یادگیری علم باشد";
string start = "دانشگاه";
string end = "باشد";
var pattern = start + @"\s*(.*?)\s*" + end; // where car= is the first delimiter and ; is the second one
var result = Regex.Match(input, pattern).Groups[1].Value;
MessageBox.Show(result);


میخوام خروجی کد به این شکل باشه


1- باید دانشگاه خوبی
2-دانشگاه خوبی
3- باید محل یادگیری علم

در واقع میخوام لیستی از تمام عبارات بین دو رشته خاص استخراج بشه ..

csharp.net
شنبه 03 مرداد 1394, 19:23 عصر
فکر کنم لینک زیر به دردتون بخوره
http://www.dotnetperls.com/between-before-after

بیتا حکمت
شنبه 03 مرداد 1394, 19:28 عصر
ممنون ، اما اون کدها فقط یک رشته رو مابین دو رشته برمی گردونه (اگه درست متوجه شده باشم ) ، به این شکل نوشتم ولی هنوز هم کامل جواب نمی ده

var input = " دانشگاه باید دانشگاه خوبی باشد ، دانشگاه باید محل یادگیری علم باشد";
string start = "دانشگاه";
string end = "باشد";
var pattern = start + @"\s*(.*?)\s*" + end;
for (int i = 0; i <= Regex.Match(input, pattern).Groups.Count-1 ; i++)
{
var result = Regex.Match(input, pattern).Groups[i].Value;
MessageBox.Show(result);
}

بیتا حکمت
یک شنبه 04 مرداد 1394, 12:17 عصر
یعنی واقعا" همه چین مساله ای ساده رو کسی تا حالا باهاش برخورد نداشته :لبخند:
دوستان اینجا یه اقایی اینجا جواب داده :
http://www.c-sharpcorner.com/Forums/Thread/310337/get-all-strings-between-two-strings.aspx

من انگلیسی ام خوب نیست ، چطور بهش بگم که مثالهای لینک مربوط به برش رشته از میان دو کاراکتر هست نه تمام رشته های مابین دو رشته ، یه پیامی میخوام که
عصبانیت ام و خشم ام هم بیان کنه :لبخند:

رشته مورد نظر من ثابت نیست ، و اینکه همیشه تغییر کنه ، اینجا فقط واسه اینکه مثال گویاتر بشه ، مقدار input رو نوشتم .

بیتا حکمت
یک شنبه 04 مرداد 1394, 16:33 عصر
دوستان ممنونم ، پس از 10 ساعت متوجه شدم خیعلی ساده اس



string authorsString = "reasons why i love you i loveeeeee you very much,i never forget you ";


List<string> arrlist = new List<string>(ExtractFromString(authorsString, "i", "you"));

foreach (string str in arrlist)
{
MessageBox.Show(str);
}



و اما متد لازم :




private static List<string> ExtractFromString(string text, string startString, string endString)
{
List<string> matched = new List<string>();
int indexStart = 0, indexEnd = 0;
bool exit = false;
while (!exit)
{
indexStart = text.IndexOf(startString);
indexEnd = text.IndexOf(endString);
if (indexStart != -1 && indexEnd != -1)
{
matched.Add(text.Substring(indexStart + startString.Length, indexEnd - indexStart - startString.Length));
text = text.Substring(indexEnd + endString.Length);
}
else
exit = true;
}
return matched;
}