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

نام تاپیک: جستجو در رشته

  1. #1

    Question جستجو در رشته

    سلام دوستان
    برای جستجو توی رشته از چه متد هایی میتونم استفاده کنم؟!؟
    برای مثال

    String word = "cat";
    String txt = "cat is here";
    boolean found = txt.contains(word);


    میشه تشخیص داد که هست یا نه!!!
    من میخوام بدونم با چی میشه یک رشته رو پیدا کزد و بر گردوند!
    و با چی میشه یک رشته رو یدا کرد و شمارش کرد که مثلا چند تا از رشته Cat داریم!!!؟؟

  2. #2
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: جستجو در رشته

    شما باید از متد indexOf استفاده کنید که محل وقوع کلمه رو از نوع int بهتون میده. بعد هم برای اینکه تعداد تکرارش رو پیدا کنید از متد های مختلف indexOf استفاده کنید. به این صورت :
            String word = "cat";
    String txt = "cat is here";
    int index=-word.length();
    int found=-1;
    do{
    found++;
    index=txt.indexOf(word, index+word.length());
    }while(index!=-1);
    System.out.println(found);


    البته میتونستید تابع بازگشتی هم بنویسید، ولی خب همینجوریش هم سادست. فقط مطمئن باشید این کد رو دقیق دقیق فهمیدید بعد ازش استفاده کنید. مثلا چرا do...while استفاده شده؟ اگر while(index!=-1( بود چه مشکلی ممکن بود پیش بیاد؟ برای راهنمایی فرض کنید رشته ی word یک حرفی بود. ضمنا چرا index=-word.length() قرار گرفته ( توجه کنید به indexOf(word, index+word.length( )

    موفق باشید

  3. #3
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: جستجو در رشته

    یک نکته رو اضافه کنم اونم اینکه حتما میدونید مثلا اگه رشته txt این باشه : kasjgdkjsagdkjasgcatkalksdjalkdsjlacatakjsd
    جواب 2 خواهد بود.
    به هر حال هر چیزی ممکن برداشت های مختلفی ازش باشه، برای همین من این نکته رو گفتم که شاید منظورت مثل cat تو مثالت باشه که یک کلمه جداگانه باشه. برای اینکه کلمه مستقل در نظر گرفته بشه بهتره اینکار رو قبل از پیدا کردن انجام بدید :
    word=" "+word+" ";
    txt=" "+txt+" ";

    موفق باشید.

  4. #4

    نقل قول: جستجو در رشته

    متشکررررررررررررررررررررر ررررم. :)

  5. #5
    کاربر جدید آواتار سایانا
    تاریخ عضویت
    دی 1392
    محل زندگی
    قاره کوچک
    پست
    23

    نقل قول: جستجو در رشته

    این که چرابه جای while ازdo-while استفاده شده معلومه چون به قول خودتون اگه کلمه یک حرفی باشه حلقه اجرا نمیشه. ولی این که چرا نوشتید (int index=-word.length();

    ) رو متوجه نشدم.
    راستی راهی نیست که به جای خود کلمه متغییری که دارای اون هست رو استفاده کنیم؟
    اگه تعداد مواردی که باید جست وجو شه زیاد باشه نوشتن این کد برای همش کار جالبی نیست!

  6. #6
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: جستجو در رشته

    "معلومه چون به قول خودتون اگه کلمه یک حرفی باشه"
    خب بعدیش هم به قول خودم میگفتید دیگه. در اصل مثلا راهنمایی کردم در حد جواب! اونجا که گفتم تو تابع indexOf(word, index+word.length( ).

    خب شما ببینید تابع indexOf دو آرگومان داره. اولی که مشخصه، دومی indexfrom هست. یعنی از اینجای رشته شروع کن به جستجو. اگر index=0 باشه، محل شروعش میشه 0+word.length که از اول رشته سرچ نمیکنه. پس مقدار اولیه رو -word.length میذاریم تا وقتی با word.length جمع شد، بشه صفر. دیگه از صفر شروع میکنه. هر کلمه ای که پیدا کرد، به اندازه طول رشته میره جلو و از اونجا دنبال بعدیش میگرده.
    راستی راهی نیست که به جای خود کلمه متغییری که دارای اون هست رو استفاده کنیم؟
    اگه تعداد مواردی که باید جست وجو شه زیاد باشه نوشتن این کد برای همش کار جالبی نیست!
    منظورتون رو دقیق نفهمیدم. من الان اومدم از همون متغیر استفاده کردم دیگه، خود کلمه رو که مستقیم ننوشتم. اگه منظورتون رو درست فهمیده باشم، خب میتونید به صورت یک متد یا همون تابع بنویسید هر وقت خواستید استفاده کنید. کلا بعید میدونم method منظورتون باشه، ولی خب برای محکم کاری :
     public int find(String word,String expression){
    int index=-word.length();
    int found=-1;
    do{
    found++;
    index=expression.indexOf(word, index+word.length());
    }while(index!=-1);
    return found;
    }
    آخرین ویرایش به وسیله vahid-p : شنبه 13 اردیبهشت 1393 در 23:44 عصر

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

  1. جستجو در رشته
    نوشته شده توسط yekta64 در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: سه شنبه 31 شهریور 1388, 23:31 عصر
  2. پاسخ: 7
    آخرین پست: پنج شنبه 26 مهر 1386, 13:13 عصر
  3. پاسخ: 2
    آخرین پست: دوشنبه 30 بهمن 1385, 12:57 عصر
  4. جستجو در رشته
    نوشته شده توسط safari123 در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: سه شنبه 21 آذر 1385, 13:29 عصر
  5. جستجو در رشته
    نوشته شده توسط amir_civil در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 6
    آخرین پست: شنبه 26 فروردین 1385, 16:16 عصر

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

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