PDA

View Full Version : دستور switch برای پیدا کردن مقدار در string contain



unrealword
پنج شنبه 02 مرداد 1393, 14:28 عصر
سلام خدمت اساتید محترم
من می خام با دستور switch چک کنم
اگر متن من شامل یه ابارتی بود یه کاری انجام بده

switch (items.Contains(items))
{

case "اااااااا":

MessageBox.Show("was found yyyy");

break;

case "xxxxx":
MessageBox.Show("xxxxx");
break;


}
}


ولی متاسفانه نتونتسم جواب بگیرم
لطفا راهنمایی بفرمایید

plus
پنج شنبه 02 مرداد 1393, 15:28 عصر
متد Contains یک مقدار bool برمیگردونه و میگه آیا مقدار پارامتر در شی هست یا نه. اینکه این مقدار bool رو با مقدار های رشته ای مقایسه کنید معنی نمیده.

string s = "Abcdefgh";
if (s.Contains("A") {
// Do this;
}
else if (s.Contains("B")) {
// Do that;
}

unrealword
پنج شنبه 02 مرداد 1393, 16:51 عصر
مممنون دوست عزیز من با switch می خام
کسی می تونه با دستور switch فیکس کنه همین رو

abbas.oveissi
پنج شنبه 02 مرداد 1393, 22:25 عصر
مممنون دوست عزیز من با switch می خام
کسی می تونه با دستور switch فیکس کنه همین رو
دوست عزیز همونطور که آقای plus گفتند.این تابع Contains فقط True یا False بر میگردونه.حالا شما چه جوری میخوای این رو با switch استفاده کنید ؟

unrealword
جمعه 03 مرداد 1393, 11:47 صبح
الان من یه گرید ویو دارم
می خام متن داخل گرید ویو رو بخونم بعد یه کلاس رو صدا بزنم
با دستور if else کلی باید if else بزنم
راه دیگه ای هم به ذهنم نمی زسه

foreach (var VARIABLE in chlstsites.CheckedItems)
{
string items = VARIABLE.ToString();

if (items.Contains("gpeers.com"))
{
Cgpeers tac = new Cgpeers();

من 10 تا کلاس دارم و مقدار داخل گرید ممکنه 10 تا باشه
بعد برای هر کدوم باید یه if else بنویسم
راه بهتری نیست

abbas.oveissi
جمعه 03 مرداد 1393, 11:58 صبح
الان من یه گرید ویو دارم
می خام متن داخل گرید ویو رو بخونم بعد یه کلاس رو صدا بزنم
با دستور if else کلی باید if else بزنم
راه دیگه ای هم به ذهنم نمی زسه

foreach (var VARIABLE in chlstsites.CheckedItems)
{
string items = VARIABLE.ToString();

if (items.Contains("gpeers.com"))
{
Cgpeers tac = new Cgpeers();

من 10 تا کلاس دارم و مقدار داخل گرید ممکنه 10 تا باشه
بعد برای هر کدوم باید یه if else بنویسم
راه بهتری نیست
آخه بستگی داره به اینکه از اون کلاس ها چه جوری استفاده میکنید.یک راه حل اینه یک Interface تعریف کنید و بعد با استفاده از Activator.CreateInstance از کلاس هاتون نمونه سازی کنید.این متد برای ساخت کلاس هم رشته قبول میکنه.اصن دیگه نیازی به Switch یا if نیست.

unrealword
جمعه 03 مرداد 1393, 12:46 عصر
کلاس ها اینطوری که هر کلاس میاد اطلاعات یه سایت رو می خونه و تو ورد پرس پست می زنه
من برنامه رو طوری نوشتم که میاد ادرس هر کتوری از سایت رو می زنی همونو می گیره
الان من یو ار ال رو می خام برم از داخل گرید می خونم بعد تشخیص بدم ما چه سایتیه کلاس برنامه رو صدا بزنم
اگز این چیزی گه گفتید با اینترفیس حل می شه یه راهنمایی برفایید مممنون می شم

abbas.oveissi
شنبه 04 مرداد 1393, 06:30 صبح
کلاس ها اینطوری که هر کلاس میاد اطلاعات یه سایت رو می خونه و تو ورد پرس پست می زنه
من برنامه رو طوری نوشتم که میاد ادرس هر کتوری از سایت رو می زنی همونو می گیره
الان من یو ار ال رو می خام برم از داخل گرید می خونم بعد تشخیص بدم ما چه سایتیه کلاس برنامه رو صدا بزنم
اگز این چیزی گه گفتید با اینترفیس حل می شه یه راهنمایی برفایید مممنون می شم
مثلا فکر کنید که همه کلاس ها یک متد GetData دارند که باید فراخوانی بشه.برای همین یک Interface تعریف میکنید که یک متد GetData داشته باشه،بعد همه کلاس ها این Interface رو میان پیاده سازی میکنن.مثل کد زیر :
interface ITest
{
string getData();
}

public class A : ITest
{
public string getData()
{
return "methode getData dakhele class e A ";
}
}

public class B : ITest
{
public string getData()
{
return "methode getData dakhele class e B ";
}
} حالا هر بار که اسم کلاس رو بصورت رشته از دیتاگرید خوندید ،میتوانید با استفاده از کد زیر،متد GetDataاشو فرخوانی کنید :
string className = "A";

string formTypeFullName = String.Format("{0}.{1}", this.GetType().Namespace, className);
Type type = Type.GetType(formTypeFullName, true);
ITest tempObj = (ITest)Activator.CreateInstance(type);
MessageBox.Show(tempObj.getData());البته میشد که بیخیال Interface شد و بجاش از Switch استفاده کنید.اما Interface کار را خیلی بهتر میکنه.