سوال در مورد Split در سی شارپ
#1
Note 
سلام، من وقتی بخوام یک تکست باکس رو Split کنم که به صورت تصادفی چیزی رو به من نشون بده ، از دستور زیر استفاده میکنم :
[CSHARP]
string[] war = null;
war = txtsplit.Text.Split('#');
Random random721 = new Random();
string result = war[random721.Next(war.Length)];
MessageBox.Show(result, "Message");
[/CSHARP]

حالا مثلا متنی که در TXTSPLIT نوشته شده از 400 کاراکتر بیشتر بود رو چطوری توی 2تا پیام نشون بدم؟ من این کار رو کردم :

[CSHARP]
string[] war = null;
war = txtsplit.Text.Split('#');
Random random721 = new Random();
string result = war[random721.Next(war.Length)];
MessageBox.Show(result, "Message");

if (result.Length > 400)
{
result = result.Substring(400);
MessageBox.Show(result, "Message");
}
[/CSHARP]

خب حالا فرض کنید که ما متنی در TXTSPLIT مینوسیم :

سلام شما تا به حال به سافت افزار آمده اید ؟ وبسایتی آموزشی برای شما دوست عزیز #سلام خوبی ؟ چه خبر 123456789 بدم ! نه اصلا........................

خب الان این دوتا پیام هست ! فرض کنید که از 400 کلمه بیشتر بودن ، با کدی که من نوشتم 2بار پیام رو نشون میده ! یعنی اینکه اول کل پیام رو تا آرایمون میگره و نشون میده بعد اگه از 400 تا بیشتر بود ، از کاراکتر 400 به بعد رو دوباره ارسال میکنه ، حالا اگه من بخوام کاری کنم که بار اول فقط تا همون کاراکتر 400 رو نشون بده و بار بعدی از کاراکتر 400 به بعد رو نشون بده چیکار باید بکنم؟

سوال دوم :
فرض کنید 2تا تکست باکس و یک دکمه داریم و TextBox2 رو Split کردیم و یک کلمه واسش تعریف کردیم ( مثلا WAR )

WAR1= ta avalin #
WAR2 = ta Dovomin #
WAR3 = ta Sevomin #

مثلا توی تکست باکس2 این ها هستند :

link1#link2#link3#link4

مثلا اگه توی تکست باکس 1 بنویسیم WAR1 دقیقا همون متن link1 رو ارسال کنه ! و WAR2 رو اگه بنویسیم ، Link2 رو ارسال کنه .... و به صورت تصادفی نباشه ( البته وقتی روی دکمه کلیک کردیم!)

[CSHARP]
if (textBoxQ.Text.ToLower().IndexOf("war") + 1 != 0)
{
string[] war = null;
war = txtsplit.Text.Split('#');
Random random721 = new Random();
string result = war[random721.Next(war.Length)];
MessageBox.Show(result, "Message");
}
[/CSHARP]

خب با اینکار به صورت تصادفی بهم نشون میده ، اگه بخوام اونجوری که میخوام کد رو بنویسم چیکار باید کنم؟کد رو به چه چیزی تغییر بدم؟

ممنون میشم مثله همیشه جواب بدید.

آخرین ویرایش: 02-06-2013 ساعت 11:16، توسط The Arrow
پاسخ
#2
Note 
یعنی کسی جواب اینو بلد نیست؟

پاسخ
#3
Note 
سوالت زیاد شفاف نیست

اصلا تو این کد اول هدفت جیه؟ خوب هر دو کد همون کارو میکنن اگر از 400 کاراکتر بیشتر باشه بازم همون کارو انجام میده!
این برای اینکه دو بار نمایش نده:
[CSHARP] string[] var = null;
var = txtsplit.Text.Split('#');
Random random721 = new Random();
string result = var[random721.Next(var.Length)];

if (result.Length > 5)
{
result = result.Substring(0);
MessageBox.Show(result, "Message");
return;
}
MessageBox.Show(result, "Message");[/CSHARP]

اگه منظورت از war متغیره اون var نوشته میشه (variable)

پاسخ
#4
Note 
سلام ممنون که جواب دادید
WAR رو الکی نوشتم
دارم برای سروری که برای چت ساختیم ربات میسازم ، واسه همین میخوام متن از مثلا 400 بیشتر بود دو بار ارسال کنه ، بار اول تا کاراکتر 400 و بار بعد از 400 به بعد.


اما جواب سوال دوم :
یکی بهم گفت که اینکارو انجام بدم :

[CSHARP]
if (textBoxQ.Text.ToLower() == "c1")
{
string[] tr = null;
tr = txtsplit.Text.Split('#');
MessageBox.Show(tr.ElementAt(0),"Message1");
}
if (textBoxQ.Text.ToLower() == "c2")
{
string[] wr = null;
wr = txtsplit.Text.Split('#');
MessageBox.Show(wrt.ElementAt(1),"Message2");
}
و الی آخر .......
[/CSHARP]

خب اینکار درسته اما باعث طولانی شدن کد میشه Sad ،حالا اگه من بخوام این رو هم مثه بالایی کاراکتری کنم (مثلا پیام رو تا 400 یکبار و از 400 به بعد دوباره ارسال کنه ) ، چیکار کنم؟

ممنون

پاسخ
#5
Note 
[CSHARP]
string[] tr = textBox.Text.Split('#');
for (int i = 1; i < tr.Count(); i++)
{
if (txtq.Text == "C".ToLower() + i.ToString())
{
if (tr.ElementAt(i - 1).Length > 5)
MessageBox.Show(tr.ElementAt(i - 1), "Greater than 5 #Message" + i.ToString());

MessageBox.Show(tr.ElementAt(i-1), "#Message"+i.ToString());
}
}
[/CSHARP]

پاسخ
ایجاد موضوع جدید   پاسخ به موضوع  

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Note کتاب آموزش Parse کردن یک خبر خوان وردپرسی برای ویندوزفون The Arrow 0 968 23-04-2015 ساعت 09:24
آخرین ارسال: The Arrow
Note سوال ساخت تقویم فارسی در ویندوز 8.1 The Arrow 2 977 16-01-2015 ساعت 00:32
آخرین ارسال: The Arrow
Note دیتابیس SQLite در سی شارپ The Arrow 3 2,404 07-11-2014 ساعت 22:40
آخرین ارسال: VBProgrammer
Note FileAssociation در سی شارپ The Arrow 1 563 05-11-2014 ساعت 12:32
آخرین ارسال: SOFTAFZAR
Note آموزش کامل سی شارپ (ویدئو) xMAN 2 678 02-10-2014 ساعت 12:50
آخرین ارسال: xMAN
Note explorer سی شارپ cMan 1 483 30-08-2014 ساعت 12:07
آخرین ارسال: SOFTAFZAR
Note پیدا کردن متن در سی شارپ arfanz 7 869 27-08-2014 ساعت 01:10
آخرین ارسال: The Arrow
Note برنامه نویسی موازی با سی شارپ xMAN 0 448 05-08-2014 ساعت 12:01
آخرین ارسال: xMAN
Note جستجو در یک متن در سی شارپ arfanz 12 2,218 16-07-2014 ساعت 09:32
آخرین ارسال: Stack OverFlow
Note مخفف کنترلهای سی شارپ mshayan 2 843 15-07-2014 ساعت 13:32
آخرین ارسال: mshayan

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