مشکل در Substring کردن

#C

توسط thearrow در 5 سال پیش
0 42.8k 8 5 سال پیش
thearrow microsoftman theknight
0

سلام سال نو رو به شما و خانواده ی گرامیتان شادباش میگم این کد کجاش مشکل داره ؟ [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

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

ممنون

0

سلام پشمک جون داداش الان که هنوز عید نشده گفتی مزش پرید :73: و اما جواب سوال پارامتر دوم substring طوله درسته؟ پس 1000 + 1500 میشه 2500 اما تو تو شرط گفتی اگر بزرگتر از 2000 و کوچیکتر از 2500 بخاطر همین ارورمیده باید بگی اگر کوچیکتریا مساوی 2500 شد: [CSHARP] else if (body.Length > 2000 && body.Length <= 2500) [/CSHARP]

0

بازم همون ارور رو میده !

0

تازه گرفتم چی شد! [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 کاراکتر)

0

هواستون کجاست؟ :biggrinsmiley: دوستان وقتی تو شرط میگه بزرگتر از 2000 و کوچیکتر از 2500 پس 2300 هم شرط رو True میکنه دیگه! تو شرط گفتید 1000 + 1500 رو بگیر در حالیکه اصلا طول رشته 2500 نیست 2300 کاراکتره! پس شرط غلطه باید حداقل رو بذاری روی 2500 : [CSHARP] else if (body.Length >= 2500 && body.Length <= 4500) [/CSHARP] یا تو شرط طول کمتری رو بخوای.

0

> ممنون، من فکر وقتی مینوسم 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
0

راست میگیا عجب سوتی دادم :smiles (14):

0

THE KNIGHT

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

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

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

0

> تا وقتی طول رشته حتی 2100 یا 2300 تا باشه ، دیگه خودش تشخیص بده
آره دقیقا اینو میخواستم بگم اما مهم این بود که خطا برطرف بشه.

خوش آمدید

برای طرح سوال، ایجاد بحث و فعالیت در سایت نیاز است ابتدا وارد حساب کاربری خود شوید. در صورتی که هنوز عضو سایت نیستید میتوانید در عرض تنها چند ثانیه ثبت نام کنید.

لطفا ابتدا لاگین کنید