• مشکل در Substring کردن
    #1
    Note 
    سلام
    سال نو رو به شما و خانواده ی گرامیتان شادباش میگم
    این کد کجاش مشکل داره ؟
    [CSHARP]
    string body = richTextBox1.Text;
    if (body.Length < 500)
    {
    richTextBox2.Text = body;
    }
    else
    {
    if (body.Length > 500 && body.Length < 1000)
    {
    richTextBox2.Text = body.Substring(0, 450);
    richTextBox3.Text = body.Substring(450);
    }
    else if (body.Length > 1000 && body.Length < 1500)
    {
    richTextBox2.Text = body.Substring(0, 450);
    richTextBox3.Text = body.Substring(450, 1000);

    richTextBox4.Text = body.Substring(1000);
    }
    else if (body.Length > 1500 && body.Length < 2000)
    {
    richTextBox2.Text = body.Substring(0, 450);
    richTextBox3.Text = body.Substring(450, 1000);
    richTextBox4.Text = body.Substring(1000, 1500);

    richTextBox5.Text = body.Substring(1500);
    }

    else if (body.Length > 2000 && body.Length < 2500)
    {
    richTextBox2.Text = body.Substring(0, 450);
    richTextBox3.Text = body.Substring(450, 1000);
    richTextBox4.Text = body.Substring(1000, 1500);

    richTextBox5.Text = body.Substring(1500,2000);

    richTextBox6.Text = body.Substring(2000);
    }
    }
    [/CSHARP]


    توی
    کد:
    else if (body.Length > 2000 && body.Length < 2500)
    به این
    کد:
    richTextBox4.Text = body.Substring(1000, 1500);
    گیر میده
    و ارورش هم :
    کد:
    Index and length must refer a location within the string

    به نظر شما به دلیل رفتن به سطر بعدی در متن نیست ؟

    ممنون

    See your dreams every where  and every time , try to remember your dreams because a man lives with his dreams forever
    پاسخ
    #2
    Note 
    سلام
    پشمک جون داداش الان که هنوز عید نشده گفتی مزش پرید :73:
    و اما جواب سوال
    پارامتر دوم substring طوله درسته؟ پس 1000 + 1500 میشه 2500 اما تو تو شرط گفتی اگر بزرگتر از 2000 و کوچیکتر از 2500 بخاطر همین ارورمیده
    باید بگی اگر کوچیکتریا مساوی 2500 شد:
    [CSHARP]
    else if (body.Length > 2000 && body.Length <= 2500)
    [/CSHARP]

    .Are you a programmer? welcome home
    ببخشید که یکم کم پیدا شدیم Blush
    پاسخ
    #3
    Note 
    بازم همون ارور رو میده !

    See your dreams every where  and every time , try to remember your dreams because a man lives with his dreams forever
    پاسخ
    #4
    Note 
    تازه گرفتم چی شد!
    [CSHARP]
    else if (body.Length > 2000 && body.Length <= 2500)
    {
    richTextBox2.Text = body.Substring(0, 500);
    richTextBox3.Text = body.Substring(500, 500);
    richTextBox4.Text = body.Substring(1000, 500);

    richTextBox5.Text = body.Substring(1500, 500);

    richTextBox6.Text = body.Substring(2000);
    }
    [/CSHARP]

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

    ممنون، من فکر وقتی مینوسم 1000 تا 1500 ، یعنی از 1000 تا 1500 رو تیکه میکنه (یعنی 500 کاراکتر)

    See your dreams every where  and every time , try to remember your dreams because a man lives with his dreams forever
    پاسخ
    #5
    Note 
    هواستون کجاست؟ :biggrinsmiley:
    دوستان وقتی تو شرط میگه بزرگتر از 2000 و کوچیکتر از 2500 پس 2300 هم شرط رو True میکنه دیگه! تو شرط گفتید 1000 + 1500 رو بگیر در حالیکه اصلا طول رشته 2500 نیست 2300 کاراکتره!
    پس شرط غلطه باید حداقل رو بذاری روی 2500 :
    [CSHARP]
    else if (body.Length >= 2500 && body.Length <= 4500)
    [/CSHARP]
    یا تو شرط طول کمتری رو بخوای.

    چطور امضا کنم؟  Huh
    پاسخ
    #6
    Note 
    نقل قول: ممنون، من فکر وقتی مینوسم 1000 تا 1500 ، یعنی از 1000 تا 1500 رو تیکه میکنه (یعنی 500 کاراکتر)

    نه! مایکروسافت من گفت درسته! پارامتر دوم طول رشتست یعنی از کاراکتر 1000 م شروع کن 1500 تا برو جلو میشه 2500
    اما چون 2500 تا کاراکتر وجود نداره خطا میده در کل شما 1500 کاراکتر رو انتخاب میکنی دیگه اما اینجا با index کار داریم.
    [CSHARP]
    string body = "THIS IS A TEST BY THE KNIGHT";
    Console.WriteLine(body.Substring(5,2)); // output: IS
    [/CSHARP]

    آخرین ویرایش: 16-03-2014 ساعت 12:22، توسط THE KNIGHT
    چطور امضا کنم؟  Huh
    پاسخ
    #7
    Note 
    راست میگیا عجب سوتی دادم Confusedmiles (14):

    .Are you a programmer? welcome home
    ببخشید که یکم کم پیدا شدیم Blush
    پاسخ
    #8
    Note 
    THE KNIGHT

    بله همینطوره ، من منظرم این بود:

    من قبل از ایجاد تاپیک فکر میکردم، وقتی مینوسم 1000 تا 1500 ، یعنی از 1000 تا 1500 رو تیکه میکنه (یعنی 500 کاراکتر)
    اول که متن مایکروسافت من رو خوندم ، نفهمیدم چی شدو پست دادم ، بعد بار دوم که خوندم گرفتم منظورشو
    کد بالایی که گذاشتم درست کار میکنه
    اصلا واسه همین این رو گذاشتم
    [CSHARP]
    richTextBox6.Text = body.Substring(2000);
    [/CSHARP]
    تا وقتی طول رشته حتی 2100 یا 2300 تا باشه ، دیگه خودش تشخیص بده

    ممنون بابت کمکتون

    See your dreams every where  and every time , try to remember your dreams because a man lives with his dreams forever
    پاسخ
    #9
    Note 
    نقل قول: تا وقتی طول رشته حتی 2100 یا 2300 تا باشه ، دیگه خودش تشخیص بده
    آره دقیقا
    اینو میخواستم بگم اما مهم این بود که خطا برطرف بشه.

    چطور امضا کنم؟  Huh
    پاسخ
    ایجاد موضوع جدید   پاسخ به موضوع  

    کاربرانِ درحال بازدید از این موضوع:   1 مهمان