مشکل در 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 مهمان