PDA

View Full Version : حرفه ای: کار با رشته و جستجوی حرفه ای



cmsdqq2
جمعه 02 شهریور 1397, 19:05 عصر
دوستان سلام

اگر در یک فیلد به عنوان مثال ده شماره داشته باشیم که با فاصله از هم جدا شده باشند برای اعمال شرط برابر بودن مقدار و جستجو چه باید کرد؟

مثال:
فیلد مربوط به شماره تماس هست و سه مقدار به صورت زیر وارد شدند:
021489756 034587954 0912159789

در واقع نشان اتمام شدن مقدار، فاصله هست.

حالا میخوایم شرط بذاریم.

اگه مقدار ورودی برابر بود با یکی از از مقادیر وارد شده، فلان کار رو انجام بده.



if (txtTel.Text== reader["fTel"].ToString())

{
///
}

alexmcse
جمعه 02 شهریور 1397, 21:29 عصر
سلام
یک مثال
private string[] s; private void textBox1_TextChanged(object sender, EventArgs e)
{
s = textBox1.Text.Split(' ');
}


private void button1_Click(object sender, EventArgs e)
{
var print = "";
foreach (var num in s)
{
if (num.Contains( "09"))
{
print = print + num + Environment.NewLine;
}
}
MessageBox.Show(print);
}

cmsdqq2
شنبه 03 شهریور 1397, 02:31 صبح
خیلی ممنون لطف کردین.

فقط یک موضوعی هست.

شماره تماس صرفاً برای موبایل نیست. برای تلفن های ثابت با کد استانی و بدون کد استانی هم هست. یعنی در این فیلد چنین شماره هایی هم ثبت میشه.

danialafshari
شنبه 03 شهریور 1397, 03:12 صبح
با سلام
کافیه بر اساس فاصله split کنید و سپس توسط حلقه بر روی اسپلیت شده جستجو انجام بدید

string str = "021489756 034587954 0912159789";
string[] trimed = str.Split(' ');
foreach (var item in trimed)
{
if (item == "034587954")
{
//your job
}
}

موفق باشید

Mahmoud.Afrad
شنبه 03 شهریور 1397, 03:20 صبح
یعنی میخواهید تک تک رکوردها رو بخونید و مقایسه انجام بدید؟!!
در چنین مواردی بهتر هست یک جدول مجزا ایجاد و به ازای هر مقدار یک رکورد درج کنید.

cmsdqq2
چهارشنبه 07 شهریور 1397, 19:26 عصر
با سلام
کافیه بر اساس فاصله split کنید و سپس توسط حلقه بر روی اسپلیت شده جستجو انجام بدید

string str = "021489756 034587954 0912159789";
string[] trimed = str.Split(' ');
foreach (var item in trimed)
{
if (item == "034587954")
{
//your job
}
}

موفق باشید



خیلی ممنونم، لطف کردین

cmsdqq2
چهارشنبه 07 شهریور 1397, 19:27 عصر
یعنی میخواهید تک تک رکوردها رو بخونید و مقایسه انجام بدید؟!!
در چنین مواردی بهتر هست یک جدول مجزا ایجاد و به ازای هر مقدار یک رکورد درج کنید.


بله

ممکن هست بیشتر توضیح بدید؟ ممنونم

danialafshari
چهارشنبه 07 شهریور 1397, 20:01 عصر
بله

ممکن هست بیشتر توضیح بدید؟ ممنونم

اگر بخواهید دونه دونه رکورد ها رو پردازش کنید هم صحیح نیست هم خیلی طول میکشه شاید اولش تو دید نیاد ولی وقتی اطلاعات زیاد شد باعث کندی میشه
بهتره یک جدول در نظر بگیرید و شماره ها رو درونش قرار بدید و برای پردازش میتونید از کوئری استفاده کنید

cmsdqq2
دوشنبه 02 مهر 1397, 08:40 صبح
با سلام
کافیه بر اساس فاصله split کنید و سپس توسط حلقه بر روی اسپلیت شده جستجو انجام بدید

string str = "021489756 034587954 0912159789";
string[] trimed = str.Split(' ');
foreach (var item in trimed)
{
if (item == "034587954")
{
//your job
}
}

موفق باشید



همچنان ممنونم

فقط یک مسئله ای هست. اون هم اینکه چطور باید با مقدار سلول مطابقت بدم؟

من از کد زیر استفاده میکنم اما جواب نمیگیرم. دلیلش هم واضحه اون هم اینکه مقدار phone دقیقاً برابر با item نیست.



com.CommandText = "SELECT * FROM [tb1] WHERE [phone]=@0";
com.Parameters.AddWithValue("@0", item);





چیزی که به ذهن من رسیده استفاده از عملگرهایی مثل like برای جستجو هست.

شما دوستان چه نظری دارین؟

danialafshari
دوشنبه 02 مهر 1397, 10:52 صبح
با سلام
اگر شما شماره ها در یک جدول دیگه نگهداری کنید اینطور هر فیلد یا رکورد داری یک شماره هست و نیازی به LIKE نیست و جدولتون بصورت INNER JOIN خواهد بود
موفق باشید

cmsdqq2
دوشنبه 02 مهر 1397, 10:57 صبح
با سلام
اگر شما شماره ها در یک جدول دیگه نگهداری کنید اینطور هر فیلد یا رکورد داری یک شماره هست و نیازی به LIKE نیست و جدولتون بصورت INNER JOIN خواهد بود
موفق باشید

ممکن هست کمی بیشتر توضیح بدین؟

تا به اینجا فکر نمیکنم بشه شماره ها رو در یک جدول دیگه قرار داد. چون چندین عملیات دیگه هم هست که روی این جدول فعلی انجام میشه و وقت تغییر ساختار فعلاً نیست.

cmsdqq2
دوشنبه 02 مهر 1397, 10:58 صبح
این شماره ها برای یک کاربر هست.

در واقع میخوایم برای هر یک کاربر، قابلیت تعریف 15 شماره تماس داشته باشه

danialafshari
دوشنبه 02 مهر 1397, 12:04 عصر
این شماره ها برای یک کاربر هست.

در واقع میخوایم برای هر یک کاربر، قابلیت تعریف 15 شماره تماس داشته باشه

مشکلی نیست هر چندتا شماره میخواد باشه
یک جدول ایجاد کنید که ID, PersonID, Number باشه و شما توسط PersonID متوجه میشید که کدوم شماره ها مربوط به کدوم شخص هست
این راه اصولیش هست اگر هم نمیخواهید ساختار رو تغییر بدید از همون LIKE استفاده کنید

cmsdqq2
دوشنبه 02 مهر 1397, 13:05 عصر
مشکلی نیست هر چندتا شماره میخواد باشه
یک جدول ایجاد کنید که ID, PersonID, Number باشه و شما توسط PersonID متوجه میشید که کدوم شماره ها مربوط به کدوم شخص هست
این راه اصولیش هست اگر هم نمیخواهید ساختار رو تغییر بدید از همون LIKE استفاده کنید

بله کاملاً درسته. راه اصولی و بهینه ی این موضوع همین راهکار شماست.

متاسفانه اینجا بازدهی باید قربانی بشه.

ببخشید که وقتتون رو هم میگیرم. الان به نظر شما با توجه به ساختاری که به دنبالش هستم از چه الگویی برای like استفاده کنیم بهتره؟

danialafshari
دوشنبه 02 مهر 1397, 13:48 عصر
متوجه سوالتون نشدم
همونطور که گفتم Like رو توصیه نمیکنم در نظر داشته باشید کاربر بخواد از 15 شماره یکی رو ویرایش یا حذف کنه اینجاس که ممکنه به دلیل طولانی بودن فیلد یک اشتباه انسانی باعث بشه یک رقم دیگه یا یک شماره دیگه تغییر کنه...
خودتون رو جای کاربر بزارید
موفق باشید