Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET
Nauč se s námi víc. Využij 50% zdarma na e-learningové kurzy.
C# week
Avatar
ngo.andrej
Člen
Avatar
ngo.andrej:3.5.2013 12:33

Ahoj, snažím se udělat program, který spočítá počet slov v textu a pokud jich je sudý počet, přepíše ve všech lichých slovech první písmeno na velké. Pokud bude počet lichý, přepíše ve všech sudých slovech poslední písmeno na velké. např: Kde se vzala, tu se vzala, byla tam. -> Kde Se vzala, Tu se Vzala, byla Tam.

Zatím mám tohle

private void button1_Click(object sender, EventArgs e)
        {

            textBox2.Text = "";
            int pocetInt = 0;
            string vety = textBox1.Text;
            Queue<char> znaky = new Queue<char>();
            char[] set = new char[4] { '.', '!', '?', ' ' };
            string[] pole = vety.Split(set, StringSplitOptions.RemoveEmptyEntries);
            string output = "";
            foreach (char p in vety)
            {
                if (p == '.' || p == '!' || p == '?')
                    znaky.Enqueue(p);
            }
            for (int i = 0; i < pole.Length; i++)
            {
                if (znaky.Count > 0)
                {
                    pocetInt++;
                }
                else
                {
                    output += "ŘETĚZEC NEOBSAHUJE VĚTU";
                }
            }
            if (pocetInt % 2 == 0)
            {
                foreach (char p in vety)
                {
                    if (p == '.' || p == '!' || p == '?')
                        znaky.Enqueue(p);
                }
                    textBox2.Text += SpracujVetu(vety, false) + znaky.Dequeue();

            }
        }
        static string SpracujVetu(string veta, bool opacne)
        {
            //Tu bude ulozeny nas spracovany retazec
            StringBuilder upravenyText = new StringBuilder();

            char predZnak = ' ';
            //Prejdi kazdy znak vo vete
            for (int i = 0; i < veta.Length; i++)
            {
                //Ak predch. znak bola medzera
                if (char.IsWhiteSpace(predZnak))
                {
                    //true
                    upravenyText.Append(
                        (!opacne ? char.ToUpper(veta[i]) : char.ToLower(veta[i]))
                        );
                }
                else
                {
                    //false
                    upravenyText.Append(
                        (!opacne ? char.ToLower(veta[i]) : char.ToUpper(veta[i]))
                        );
                }

                predZnak = veta[i];
            }

            return upravenyText.ToString();
        }

Snažil jsem se rozdělit na sudý, ale nevím jak spojit slova s prvním velkým počátečním a slova normální.
Děkuji za každou radu. :)

 
Odpovědět
3.5.2013 12:33
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na ngo.andrej
David Čápka:3.5.2013 13:29

Proč si ta slova ve větě nesplitneš podle mezer a čárek?

Editováno 3.5.2013 13:29
Nahoru Odpovědět
3.5.2013 13:29
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.