سوال در مورد Split در سی شارپ

#C

توسط thearrow در 5 سال پیش
0 1.6k 4 5 سال پیش
thearrowvbprogrammerreza-irdev
0

سلام، من وقتی بخوام یک تکست باکس رو 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
0

یعنی کسی جواب اینو بلد نیست؟

0

سوالت زیاد شفاف نیست

اصلا تو این کد اول هدفت جیه؟ خوب هر دو کد همون کارو میکنن اگر از 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)

0

سلام ممنون که جواب دادید 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]

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

ممنون

0

[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]

خوش آمدید

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

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