• سوال در مورد 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 1,423 23-04-2015 ساعت 09:24
    آخرین ارسال: The Arrow
    Note سوال ساخت تقویم فارسی در ویندوز 8.1 The Arrow 2 1,467 16-01-2015 ساعت 00:32
    آخرین ارسال: The Arrow
    Note دیتابیس SQLite در سی شارپ The Arrow 3 3,151 07-11-2014 ساعت 22:40
    آخرین ارسال: VBProgrammer
    Note FileAssociation در سی شارپ The Arrow 1 719 05-11-2014 ساعت 12:32
    آخرین ارسال: SOFTAFZAR
    Note آموزش کامل سی شارپ (ویدئو) xMAN 2 850 02-10-2014 ساعت 12:50
    آخرین ارسال: xMAN
    Note explorer سی شارپ cMan 1 608 30-08-2014 ساعت 12:07
    آخرین ارسال: SOFTAFZAR
    Note پیدا کردن متن در سی شارپ arfanz 7 1,243 27-08-2014 ساعت 01:10
    آخرین ارسال: The Arrow
    Note برنامه نویسی موازی با سی شارپ xMAN 0 550 05-08-2014 ساعت 12:01
    آخرین ارسال: xMAN
    Note جستجو در یک متن در سی شارپ arfanz 12 2,879 16-07-2014 ساعت 09:32
    آخرین ارسال: Stack OverFlow
    Note مخفف کنترلهای سی شارپ mshayan 2 1,040 15-07-2014 ساعت 13:32
    آخرین ارسال: mshayan

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