PDA

View Full Version : سوال: جستجو در رشته (بدست آوردن همه ی رشته هائی که یک زیر رشته ی مشترک دارند)



voldemort1
شنبه 18 مهر 1388, 01:02 صبح
سلام دوستان من خیلی سرچ کردم ولی موفق نشدم که جوابمو با سرچ توی تالار بدست بیارم .
حالا یا روش سرچم غلطه یا واقعا کسی قبلا مثل من به این مشکل برنخورده (احتمال اولی بیشتره پس پیشاپیش عذر می خواهم ... )
دوستان من میخواهم یک رشته مثلا "12" را در یک سری رشته مثلا آرایه ائی از رشته ها سرچ کنم .
مثلا:


string str="12"
string[] str2;
str2[0]="121212";
str[1]="12121212121212";
str[3]="3465789";
str[4]="012121212012012"


می خواهم در یک پروسه رشته هائی که در آنها رشته ی مورد نظرم (که در اینجا مثلا 12 است) وجود دارد به عنوان نتیجه و رشته هائی که این گونه نیستند حذف شوند.
سوال اینجانب این است که آیا سی شارپ متدی پیش بینی کرده (البته اگر کلمات را به جا استفاده کرده باشم ...) یا روشی را دوستان پیشنهاد می نمایند ؟ :متفکر:

اَرژنگ
شنبه 18 مهر 1388, 05:58 صبح
سلام دوستان من خیلی سرچ کردم ولی موفق نشدم که جوابمو با سرچ توی تالار بدست بیارم .
حالا یا روش سرچم غلطه یا واقعا کسی قبلا مثل من به این مشکل برنخورده (احتمال اولی بیشتره پس پیشاپیش عذر می خواهم ... )
دوستان من میخواهم یک رشته مثلا "12" را در یک سری رشته مثلا آرایه ائی از رشته ها سرچ کنم .
مثلا:


string str="12"
string[] str2;
str2[0]="121212";
str[1]="12121212121212";
str[3]="3465789";
str[4]="012121212012012"


می خواهم در یک پروسه رشته هائی که در آنها رشته ی مورد نظرم (که در اینجا مثلا 12 است) وجود دارد به عنوان نتیجه و رشته هائی که این گونه نیستند حذف شوند.
سوال اینجانب این است که آیا سی شارپ متدی پیش بینی کرده (البته اگر کلمات را به جا استفاده کرده باشم ...) یا روشی را دوستان پیشنهاد می نمایند ؟ :متفکر:

دوست عزیز،
شما نحوه پیاده کردن یک مسئله را که ذهنتان است را دارید میپرسید، اگر مسئله اصلی را بازگو کنید بهتر است.
به استفاده کردن و یا نکردن از آرایه فکر نکنید، فقط حالت مسئله را توضیح بدید، که چیزی که نیاز دارید باید چه خصوصیاتی داشته باشد.
از استفاده از واژه‌هایه نا مناسب نهراسید، با توضیح بیشتر منظورتان را براسانید، واژه‌هایه درست را برایتان پیدا میکنیم.
به اشخاصه بیشتری که پستهایشان ویژگیهایه شما را داشته باشد نیاز داریم.

sara.f
شنبه 18 مهر 1388, 10:03 صبح
سلام دوستان من خیلی سرچ کردم ولی موفق نشدم که جوابمو با سرچ توی تالار بدست بیارم .
حالا یا روش سرچم غلطه یا واقعا کسی قبلا مثل من به این مشکل برنخورده (احتمال اولی بیشتره پس پیشاپیش عذر می خواهم ... )
دوستان من میخواهم یک رشته مثلا "12" را در یک سری رشته مثلا آرایه ائی از رشته ها سرچ کنم .
مثلا:


string str="12"
string[] str2;
str2[0]="121212";
str[1]="12121212121212";
str[3]="3465789";
str[4]="012121212012012"


می خواهم در یک پروسه رشته هائی که در آنها رشته ی مورد نظرم (که در اینجا مثلا 12 است) وجود دارد به عنوان نتیجه و رشته هائی که این گونه نیستند حذف شوند.
سوال اینجانب این است که آیا سی شارپ متدی پیش بینی کرده (البته اگر کلمات را به جا استفاده کرده باشم ...) یا روشی را دوستان پیشنهاد می نمایند ؟ :متفکر:
سلام
با متد substring



privatevoid button5_Click(object sender, EventArgs e)
{
string[] str2={"121212","12121212121212","3465789"};
for (int i = 0; i < str2.Length; i++)
{
for (int j=0; j < str2[i].Length; j++)
if (str2[i].Substring(System.Convert.ToInt32(j)).ToString() == "12")
listBox1.Items.Add(str2[i].ToString());
}
}

voldemort1
یک شنبه 19 مهر 1388, 07:43 صبح
دوست عزیز،
شما نحوه پیاده کردن یک مسئله را که ذهنتان است را دارید میپرسید، اگر مسئله اصلی را بازگو کنید بهتر است.
به استفاده کردن و یا نکردن از آرایه فکر نکنید، فقط حالت مسئله را توضیح بدید، که چیزی که نیاز دارید باید چه خصوصیاتی داشته باشد.
از استفاده از واژه‌هایه نا مناسب نهراسید، با توضیح بیشتر منظورتان را براسانید، واژه‌هایه درست را برایتان پیدا میکنیم.
به اشخاصه بیشتری که پستهایشان ویژگیهایه شما را داشته باشد نیاز داریم.


با تشکر از پاسخ شما
هدف من از پست ابتدائی آشنائی با متد یا روش خاصی که در سی شارپ مورد استفاده قرار میگیرد بود .الگوریتم و روش کلی را در ذهن دارم و نیازی به آن ندارم ...
به طور کلی قصد انجام جستجو با روش مذکور را دارم :
یعنی می خواهم هر رشته ائی که رشته ی مورد جستجوی "12" زیر رشته ی آن محسوب میشود را به عنوان نتیجه برگرداند ...
که کاربر گرامی sara.f (http://barnamenevis.org/forum/member.php?u=114872) لطف کردند و روش رو معرفی کردند ...

voldemort1
یک شنبه 19 مهر 1388, 08:02 صبح
سلام
با متد substring



privatevoid button5_Click(object sender, EventArgs e)
{
string[] str2={"121212","12121212121212","3465789"};
for (int i = 0; i < str2.Length; i++)
{
for (int j=0; j < str2[i].Length; j++)
if (str2[i].Substring(System.Convert.ToInt32(j)).ToString() == "12")
listBox1.Items.Add(str2[i].ToString());
}
}


ممنون روشتون جالب بود ...

naeeme
یک شنبه 19 مهر 1388, 09:41 صبح
شما از regular Exp هم می تونید استفاده کنید. اگر رشته های شما طولانی باشند، روش substringمقداری کند عمل می کنه.

اَرژنگ
یک شنبه 19 مهر 1388, 10:53 صبح
با تشکر از پاسخ شما
هدف من از پست ابتدائی آشنائی با متد یا روش خاصی که در سی شارپ مورد استفاده قرار میگیرد بود .

روش خاصی در سی‌شارپ برایه اینکار نیست، روشهایه زیاد مختلفی وجود دارند.



الگوریتم و روش کلی را در ذهن دارم و نیازی به آن ندارم ...

شما نیاز ندارید، ولی ما برایه اینکه روش خاصی که به الگریتم و روشی که شما در ذهنتان دارید صدق کند، به الگریتم و روشی که شما در ذهنتان دارید احتیاج داریم.



به طور کلی قصد انجام جستجو با روش مذکور را دارم :
یعنی می خواهم هر رشته ائی که رشته ی مورد جستجوی "12" زیر رشته ی آن محسوب میشود را به عنوان نتیجه برگرداند ...
که کاربر گرامی sara.f (http://barnamenevis.org/forum/member.php?u=114872) لطف کردند و روش رو معرفی کردند ...

بدانه اینکه در چه مفهومی به این لازم دارید، روشی که سارا فرستادند درست و کافی است، ولی اگر مفهومی که در یکی از این زمینه‌هاست : کارکردن با رشته‌ها، کار کردن با تئوریه اتوماتا، کار کردن با مجموعه‌ها (استنباط از استفاده شما از کمله کلیدی اشتراک)، کار کردن بر رویه مجموعه ابجکتهایی که یک خصوصیتشان رشته است ، ...
روشهایه مختلفی و چارچوبهایه زیادی به شکل آماده وجود دارند که شما از هیچ چی شروع به نوشتن کد نکنید.

sara.f
یک شنبه 19 مهر 1388, 20:44 عصر
سلام من امروز داشتم روی کدی که فرستادم دوباره نگاه می کردم :چشمک: و فهمیدم که تنها رشته هایی را به عنوان جواب بر می گردونه که "12" آخر اون رشته باشه.
یعنی اگر "12" وسط رشته و یا حتی اول رشته باشه، آن را به عنوان جواب نمی پذیرد. :لبخند:
واسه همینم کد را بهینه سازی کردم :لبخندساده:


private void button5_Click(object sender, EventArgs e)
{
string s = "12";
string[] str2 = { "121212", "12121212121212", "3465789", "012121212012012" ,"24242412453512","12353535"};
for (int i = 0; i < str2.Length; i++)
{
for (int j = 0; j < str2[i].Length - 1; j++)
if (str2[i].Substring(System.Convert.ToInt32(j), 2).ToString() == "12")
label5.Text = i+1 + "عنصر یافت شد";
listBox1.Items.Add(str2[i].ToString());
}
}

Behrouz_Rad
یک شنبه 19 مهر 1388, 22:25 عصر
private List<string> DoSearch(string[] array, string inputToSearch)
{
List<string> result = new List<string>();

Array.ForEach<string>(array, s =>
{
bool isFound = s.IndexOf(inputToSearch) != -1;

if (isFound)
{
result.Add(s);
}
});

return result;
}

private void Form1_Load(object sender, EventArgs e)
{
string[] lists = { "12", "1212", "14", "fff12dd" };

List<string> result = DoSearch(lists, "12");

MessageBox.Show(result.Count.ToString());
}