View Full Version : بدست اوردن تمام رشته های بین دو رشته
بیتا حکمت
شنبه 03 مرداد 1394, 19: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, 20:23 عصر
فکر کنم لینک زیر به دردتون بخوره
http://www.dotnetperls.com/between-before-after
بیتا حکمت
شنبه 03 مرداد 1394, 20: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, 13:17 عصر
یعنی واقعا" همه چین مساله ای ساده رو کسی تا حالا باهاش برخورد نداشته :لبخند:
دوستان اینجا یه اقایی اینجا جواب داده :
http://www.c-sharpcorner.com/Forums/Thread/310337/get-all-strings-between-two-strings.aspx
من انگلیسی ام خوب نیست ، چطور بهش بگم که مثالهای لینک مربوط به برش رشته از میان دو کاراکتر هست نه تمام رشته های مابین دو رشته ، یه پیامی میخوام که
عصبانیت ام و خشم ام هم بیان کنه :لبخند:
رشته مورد نظر من ثابت نیست ، و اینکه همیشه تغییر کنه ، اینجا فقط واسه اینکه مثال گویاتر بشه ، مقدار input رو نوشتم .
بیتا حکمت
یک شنبه 04 مرداد 1394, 17: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;
}
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.