نمایش نتایج 1 تا 13 از 13

نام تاپیک: مشکل در متد Contains یک متغیر String

  1. #1
    کاربر دائمی آواتار arash ghafori
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    In Web
    پست
    208

    Question مشکل در متد Contains یک متغیر String

    با سلام.
    من یه متدی دارم که یک String به عنواد پارامتر میگیره و با یه For چک میکنه گه توی اون String ، رشته یا کارکتری وجود نداشته باشه ( یعنی در واقع اون رشته فقط باید عدد باشه ). متد زیر :


    public char[] Numbers = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
    //متدی که چک میکنه
    public bool textContainsUnacceptable(string T, char[] Nambers)
    {
    for (int i = 0; i < Nambers.Length; i++)
    if (T.Contains(Nambers[i]))
    {
    return false;
    }

    return true;
    }

    //اینطوری هم فراخوانیش میکنم.
    if (textContainsUnacceptable(name, Numbers))
    {
    throw new Exception("در فیلد" + " " + object_name + " " + "فقط عدد وارد کنید");
    }


    همه چیز درست پیش میره تا زمانی که یه رشته که هم عدد داره هم کارکتر رو بهش پاس میکنم. ( مثلا 12345as47sd) . و برنامه هم قبول میکنه .

    چرا ؟ مگه متد Contains معنی "شامل بودن" رو نمیده ؟ خوب این هم شامل کارکتر هست و غیر قابل قبول ...!

    ممنون میشم کمکم کنید.


  2. #2
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    955

    نقل قول: مشکل در متد Contains یک متغیر String

    سلام.
    اول اینکه واسه اینکه بدونید که توی یک رشته مقداری که میخواید وجود داره بهتره از متد IndexOf استفاده کنید.
    دوم اینکه اگه متد رو فقط و فقط واسه این نوشتید که بیاد چک کنه که عدد هست یا خیر "کار عاقلانه ای نیست".

  3. #3
    کاربر دائمی آواتار arash ghafori
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    In Web
    پست
    208

    نقل قول: مشکل در متد Contains یک متغیر String

    نقل قول نوشته شده توسط _behnam_ مشاهده تاپیک
    سلام.
    اول اینکه واسه اینکه بدونید که توی یک رشته مقداری که میخواید وجود داره بهتره از متد IndexOf استفاده کنید.
    دوم اینکه اگه متد رو فقط و فقط واسه این نوشتید که بیاد چک کنه که عدد هست یا خیر "کار عاقلانه ای نیست".

    ممنون از اینکه پاسخ دادید.
    خوب به نظر شما چطوری چک کنم که فقط عدد بگیره ؟
    ممنون میشم راهنماییم کنید.

  4. #4
    مدیر بخش آواتار مهرداد صفا
    تاریخ عضویت
    تیر 1391
    محل زندگی
    select Country,City From World where Country.Name=IRAN and City.Contains(حضرت معصومه(ع))
    پست
    1,502

    نقل قول: مشکل در متد Contains یک متغیر String

    با سلام.
    میتوانید در یک حلقه تکتک کاراکتر ها را با متود Char.IsDigit چک کنید:

    if((from ch in text where char.IsDigit(ch) select ch).Count()>0)
    {
    MessageBox.Show("string has number!");
    }
    چشم ظاهر گر نبیند عیب نیست چشم دل گر ننگرد باید گریست
    **********
    اَلسَّلامُ عَلَى الْحُسَيْنِ وَ عَلى عَلِىِّ بْنِ الْحُسَيْنِ وَ عَلى اَوْلادِ الْحُسَيْنِ وَ عَلى اَصْحابِ الْحُسَيْنِ

  5. #5
    کاربر دائمی آواتار arash ghafori
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    In Web
    پست
    208

    نقل قول: مشکل در متد Contains یک متغیر String

    نقل قول نوشته شده توسط M.safa مشاهده تاپیک
    با سلام.
    میتوانید در یک حلقه تکتک کاراکتر ها را با متود Char.IsDigit چک کنید:

    if((from ch in text where char.IsDigit(ch) select ch).Count()>0)
    {
    MessageBox.Show("string has number!");
    }
    ممنون از پاسختون دوست عزیز.
    اما میشه یه توضیح بدید این کد رو ! یکم گنگه !
    بعد این متد میگه اگر عدد وارد کنیم قبول نیست . ( دقیقا برعکس اون چیزی که من میخوام ! ).
    ممنون میشم راهنماییم کنید.

  6. #6
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    955

    نقل قول: مشکل در متد Contains یک متغیر String

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


    private bool checkStr(string str)
    {
    System.Text.RegularExpressions.Regex Reg = new System.Text.RegularExpressions.Regex("^[0-9]+$");
    return Reg.IsMatch(str);
    }

  7. #7
    کاربر دائمی آواتار arash ghafori
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    In Web
    پست
    208

    نقل قول: مشکل در متد Contains یک متغیر String


    private bool checkStr(string str)
    {
    System.Text.RegularExpressions.Regex Reg = new System.Text.RegularExpressions.Regex("^[0-9]+$");
    return Reg.IsMatch(str);
    }
    [/QUOTE]
    ممنون دوست عزیز. کد جالبی بود و البته منطقی تر از واسه من. !
    اما این
    Regex("^[0-9]+$");
    یعنی چی ؟ این پترنا رو چطوری میشه فهمید ؟ بر چه حثبی میشه نوشت ؟
    بازم ممنون

  8. #8

    نقل قول: مشکل در متد Contains یک متغیر String


    bool IsNumeric1(string str)
    {
    if (string.IsNullOrWhiteSpace(str))
    {
    return false;
    }
    foreach (char ch in str)
    {
    if (!char.IsDigit(ch))
    {
    return false;
    }
    }
    return true;
    }

    و یا

    bool IsNumeric2(string str)
    {
    if (string.IsNullOrWhiteSpace(str))
    {
    return false;
    }
    return str.All(ch => char.IsDigit(ch));
    }
    آخرین ویرایش به وسیله Mahmoud.Afrad : دوشنبه 16 اردیبهشت 1392 در 05:27 صبح

  9. #9
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    955

    نقل قول: مشکل در متد Contains یک متغیر String

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

  10. #10
    مدیر بخش آواتار مهرداد صفا
    تاریخ عضویت
    تیر 1391
    محل زندگی
    select Country,City From World where Country.Name=IRAN and City.Contains(حضرت معصومه(ع))
    پست
    1,502

    نقل قول: مشکل در متد Contains یک متغیر String

    نقل قول نوشته شده توسط arash ghafori مشاهده تاپیک
    ممنون از پاسختون دوست عزیز.
    اما میشه یه توضیح بدید این کد رو ! یکم گنگه !
    بعد این متد میگه اگر عدد وارد کنیم قبول نیست . ( دقیقا برعکس اون چیزی که من میخوام ! ).
    ممنون میشم راهنماییم کنید.
    بله می بخشید. در اون صورت یک ! به قبل از IsDigit اضافه میکنیم تا کاارکتر هایی که عدد نیستند جستجو شوند و در صورتی که تعدادشان بیشتر از 0 باشد شرط اجرا می شود که البته جناب Mahmoud.Afrad کاملتر مطرح کردند. روش جناب _behnam_ هم کاملا درست است.
    چشم ظاهر گر نبیند عیب نیست چشم دل گر ننگرد باید گریست
    **********
    اَلسَّلامُ عَلَى الْحُسَيْنِ وَ عَلى عَلِىِّ بْنِ الْحُسَيْنِ وَ عَلى اَوْلادِ الْحُسَيْنِ وَ عَلى اَصْحابِ الْحُسَيْنِ

  11. #11
    کاربر دائمی آواتار uniqueboy_ara
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    تهران
    پست
    420

    نقل قول: مشکل در متد Contains یک متغیر String

    از این تابع استفاده کن، خیلی راحت و بی دردسر:
    private bool DigitCheck(string Input)
    {
    double Result;
    return double.TryParse(Input, out Result);
    }

  12. #12

    نقل قول: مشکل در متد Contains یک متغیر String


    ممنون دوست عزیز. کد جالبی بود و البته منطقی تر از واسه من. !
    اما این
    Regex("^[0-9]+$");
    یعنی چی ؟ این پترنا رو چطوری میشه فهمید ؟ بر چه حثبی میشه نوشت ؟
    سلام
    در عبارات باقاعده، ^ به معنی ابتدای رشته است یعنی اصرار داریم تا در ابتدای رشته تطبیق انجام شود.
    [0-9[ یعنی فقط 0 تا 9 قابل قبول است (یعنی هر کاراکتری که به آن برمی خورد باید یکی از اینها باشد)
    + یعنی می تواند بیش از یکی باشد.
    $ علامت خاتمه رشته است.
    در گوگل Regular Expressions رو جستجو کن. نرم افزار RegexBuddy هم راهنمای عالی داره.

  13. #13
    کاربر دائمی آواتار arash ghafori
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    In Web
    پست
    208

    نقل قول: مشکل در متد Contains یک متغیر String

    ممنون از همه.

تاپیک های مشابه

  1. سوال: مشکل بزرگ شدن متغیر string و کاهش سرعت برنامه
    نوشته شده توسط saed2006 در بخش C#‎‎
    پاسخ: 16
    آخرین پست: جمعه 03 اردیبهشت 1389, 13:19 عصر
  2. سوال: مشکل در دستور select با متغیر string
    نوشته شده توسط reyhaneh-sh در بخش C#‎‎
    پاسخ: 2
    آخرین پست: دوشنبه 25 شهریور 1387, 22:39 عصر
  3. مشکل با متد execute
    نوشته شده توسط MNosouhi در بخش برنامه نویسی در Delphi
    پاسخ: 21
    آخرین پست: جمعه 01 دی 1385, 15:33 عصر
  4. مشکل عجیب در مقایسه دو متغیر
    نوشته شده توسط Alirezagoodarzi در بخش برنامه نویسی در 6 VB
    پاسخ: 2
    آخرین پست: چهارشنبه 02 شهریور 1384, 19:39 عصر
  5. استفاده متغیر string در تابع Ord
    نوشته شده توسط mohsen57 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 1
    آخرین پست: شنبه 08 مرداد 1384, 08:54 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •