PDA

View Full Version : سوال: مقایسه کاراکتر با رشته



negar_d
دوشنبه 11 دی 1391, 14:52 عصر
سلام به همه دوستان
کسی میدونه چه طور می تونم یه رشته رو با یه کاراکتر مقایسه کنم ؟؟؟ :افسرده:


('if (x >= '0' && x <= '9
return true;
else
return false;

خط اول این دستور مشکل داره .

مهرداد صفا
دوشنبه 11 دی 1391, 16:06 عصر
سلام
کاراکتر را به رشته تبدیل کنید:

if (x<'9'.ToString())
//...

group45
دوشنبه 11 دی 1391, 17:04 عصر
سلام
چی رو میخواید با چی مقایسه کنید؟ نوع متغیر ایکس چیه؟

negar_d
دوشنبه 11 دی 1391, 17:16 عصر
سلام
چی رو میخواید با چی مقایسه کنید؟ نوع متغیر ایکس چیه؟

سلام
رشته ایکس باید با کاراکتر های 0 تا 9 مقایسه شود

negar_d
دوشنبه 11 دی 1391, 17:18 عصر
سلام
کاراکتر را به رشته تبدیل کنید:

if (x<'9'.ToString())
//...

سلام ممنون اما این دستور ERROR داره نمی تونه مقایسه بکنه

roolinjax
دوشنبه 11 دی 1391, 17:22 عصر
سلام
این روش صحیحی برای مقایسه ی رشته ها نیست
باید از متدهای String استفاده کنید
از متد CompareTo
اگر نیازه مثال بزنم؟

group45
دوشنبه 11 دی 1391, 17:23 عصر
سلام
رشته ایکس باید با کاراکتر های 0 تا 9 مقایسه شود

درست متوجه نمیشم.باید با تک تک اعداد مقایسه بشه یا همه اعداد 0 تا 9 ؟

negar_d
دوشنبه 11 دی 1391, 17:27 عصر
درست متوجه نمیشم.باید با تک تک اعداد مقایسه بشه یا همه اعداد 0 تا 9 ؟
باید یه رشته بگیره ، از عدد 0 تا 9 مقایسه بشه ، اگه عدد باشه True رو بر می گردونه .

negar_d
دوشنبه 11 دی 1391, 17:27 عصر
سلام
این روش صحیحی برای مقایسه ی رشته ها نیست
باید از متدهای String استفاده کنید
از متد CompareTo
اگر نیازه مثال بزنم؟

اگه میشه برام از CompareTo مثال بزنید .... ممنون

roolinjax
دوشنبه 11 دی 1391, 17:28 عصر
در ضمن اگر مقادیر رشته و کاراکترتون فقط به صورت عددی هستن خوب چرا به عدد تبدیل نمی کنید و بعد مقایسه ی ساده ی عددی انجام بدین ؟
متدی که در بالا اشاره کردم بیشتر به درد مقایسه رشته ها می خوره مثل مقایسه ی Roolinjax با ROOLINJAX

morteza5358
دوشنبه 11 دی 1391, 17:35 عصر
سلام
string X = "3";

if (char.IsDigit(X, 0))
{
MessageBox.Show("OK");
}
else
{
MessageBox.Show("NO");
}
اگه رشته عدد باشه پیام میده OK
در غیر این صورت NO
امیدوارم به دردتون بخوره......

roolinjax
دوشنبه 11 دی 1391, 17:35 عصر
مثال کاربرد CompareTo :
string X = "9";
int n = X.CompareTo('9'.ToString());
if (n==0)
MessageBox.Show("دو رشته برابر هستن");
else if (n==1)
MessageBox.Show("x bozorg tar ast");
else if (n==-1)
MessageBox.Show("x koochek tar ast");
مثال نوع عددی :
if (int.Parse(X) >= (int)'9')
MessageBox.Show("Amale morede nazar");

morteza5358
دوشنبه 11 دی 1391, 17:37 عصر
برای مثال:
"X="3434654645 در نتیجه پیام میده OK
"X="Morteza5358 در نتیجه پیام میده NO

مهرداد صفا
دوشنبه 11 دی 1391, 17:40 عصر
سلام
این روش صحیحی برای مقایسه ی رشته ها نیست
باید از متدهای String استفاده کنید
از متد CompareTo
اگر نیازه مثال بزنم؟


سلام
بله میبخشید. داشتم با vb کار میکردم تمرکزم روی سینتکس vb بود.
کد درست:

int result=x.CompareTo('5'.ToString());
if(result==0){
MessageBox.Show("x=5");
}else if(result==1){
MessageBox.Show("x>5");}
else if (result== -1)
{ MessageBox.Show("x<5"); }



البته طبق گفته دوستان ای مقایسه رشته ای صورت میگیرد و در اصل عددی نیست. برای مقایسه به صورت عددی هر دو مقدار را با استفاده از Convert.ToInt32 به مقدار عددی تبدیل کنید و مقایسه کنید.

roolinjax
دوشنبه 11 دی 1391, 17:46 عصر
سلام
بله میبخشید. داشتم با vb کار میکردم تمرکزم روی سینتکس vb بود.
کد درست:

int result=x.CompareTo('5'.ToString());
if(result==0){
MessageBox.Show("x=5");
}else if(result==1){
MessageBox.Show("x>5");}
else if (result== -1)
{ MessageBox.Show("x<5"); }



البته طبق گفته دوستان ای مقایسه رشته ای صورت میگیرد و در اصل عددی نیست. برای مقایسه به صورت عددی هر دو مقدار را با استفاده از Convert.ToInt32 به مقدار عددی تبدیل کنید و مقایسه کنید.

نه که مقایسه عددی باهاش نشه کرد ، نه
اگر مورد سوال تاپیک رو دقت کنید می بینید که تک رقمی کار کردن که در این صورت CompareTo هم بدون ایراد جواب میده اما اگر بیش از یه رقم باشه دیگه درست عمل نمی کنه.
می دونم دوستان همه بلدن اما فقط محض یادآوری میگم و قصدم جسارت به علم کسی نیست .
در واقع این متد CompareTo از سمت چپ کاراکتر به کاراکتر مقایسه کرده و پیش میره و هر جا به "نابرابری" خورد همونجا مقایسه رو پایان میده و نتیجه رو اعلام میکنه.
پس طبق نکته ی بالا رشته ی "2" از "10" بزرگتر خواهد بود که در نوع عددی این طور نبوده و نیست !
باز هم جسارت حقیر رو ببخشید.

morteza5358
دوشنبه 11 دی 1391, 18:02 عصر
سلام
دوستان اگه به سوال خوب دقت کنین ، میبینید که موضوع اصلا مقایسه نیست!!!!!!
بلکه میخواد بدونه یه چیزی بین 0 تا 9 باشه.
که با این میشه فهمید:
string X = "3";

if (char.IsDigit(X, 0))
{
MessageBox.Show("OK");
}
else
{
MessageBox.Show("NO");
}

negar_d
دوشنبه 11 دی 1391, 18:04 عصر
سلام
string X = "3";

if (char.IsDigit(X, 0))
{
MessageBox.Show("OK");
}
else
{
MessageBox.Show("NO");
}
اگه رشته عدد باشه پیام میده OK
در غیر این صورت NO
امیدوارم به دردتون بخوره......

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


البته بقیه هم زحمت کشیدن دست همه درد نکنه .. ممنون

morteza5358
دوشنبه 11 دی 1391, 18:06 عصر
سلام
خیلی خیلی ممنون
کار کرد و درست شد ... .
به قول پیرزن ها الهی خوش بخت شی ننه ... .
مرسی
دل یه جوون رو شاد کردی .


البته بقیه هم زحمت کشیدن دست همه درد نکنه .. ممنون





بهتره به جای این کلمات از دکمه "تشکر کردن" استفاده کنی.................:لبخندساده:

roolinjax
دوشنبه 11 دی 1391, 18:13 عصر
سلام
دوستان اگه به سوال خوب دقت کنین ، میبینید که موضوع اصلا مقایسه نیست!!!!!!
بلکه میخواد بدونه یه چیزی بین 0 تا 9 باشه.
که با این میشه فهمید:
string X = "3";

if (char.IsDigit(X, 0))
{
MessageBox.Show("OK");
}
else
{
MessageBox.Show("NO");
}

پس در این صورت عنوان با مسمایی برای تاپیک انتخاب کردن "مقایسه کاراکتر با رشته" !!!!
موفق باشید همه دوستان

negar_d
دوشنبه 11 دی 1391, 19:22 عصر
بهتره به جای این کلمات از دکمه "تشکر کردن" استفاده کنی.................:لبخندساده:

شرمنده ولی این دکمه کجاست ؟؟؟ :متفکر: