Avatar
ngo.andrej
Člen
Avatar
ngo.andrej:

Zdravím, jsem začátečník a potřebuji poradit, zde část mého zdrojáku

string s = "";

            if (str[str.Length - 1] == ' ')
                str = str.Remove(str.Length - 1, 1);

            char[] delim = { ' ' };

            string[] tokens = str.Split(delim);



           for (int g = 0; g < tokens.Length; g += 2)
           {
               for (int i = 1; i < tokens.Length; i += 2)
               {
                   tokens[i] = tokens[i].Trim();
                   tokens[i] = char.ToUpper(tokens[i][0]) + tokens[i].Substring(1);
                   //s += tokens[i] + " ";

                   s += tokens[g] + " " + tokens[i] + " ";
               }
            }

tento program má udělat, to že když napíšu např. "ahoj, jak se máš?" ta má převést, každý sudý slovo na první velké písmeno, takže výstup by měl být: "ahoj, Jak se Máš?". Ale bohužel program vypíše toto: "ahoj, Jak ahoj, Máš? se Jak se Máš?". Prosím o pomoc, zkoušel jsem cykly různě prohazovat, ale bez úspěchu, děkuji za pomoc.

 
Odpovědět 10.5.2013 20:18
Avatar
Odpovídá na ngo.andrej
Michal Maršálek:

Zdravím, udělal bych to takhle:

private string SudeSlovoVelkePismeno(string vstup)
        {
            string[] slova = vstup.Split(' ');
            int pocet = slova.Count();
            string vystup=slova[0];
            for (int i = 1; i < pocet; i++)
            {
                vystup += " ";
                if(i%2==1)
                    vystup+= char.ToUpper(slova[i][0]);
                else
                    vystup+= slova[i][0];
                vystup+=slova[i].Substring(1, slova[i].Length-1);
            }
            return vystup;
        }
 
Nahoru Odpovědět  +1 10.5.2013 21:01
Avatar
Odpovídá na Michal Maršálek
Michal Maršálek:

Nebo ještě kratšeji takhle:

private string SudeSlovoVelkePismeno(string vstup)
        {
            string[] slova = vstup.Split(' ');
            int pocet = slova.Count();
            string vystup=slova[0];
            for (int i = 1; i < pocet; i++)
            {
                char prvniPismeno = slova[i][0];
                if (i % 2 == 1)
                    prvniPismeno = char.ToUpper(prvniPismeno);
                vystup += " " + prvniPismeno + slova[i].Substring(1, slova[i].Length - 1);
            }
            return vystup;
        }
 
Nahoru Odpovědět  +1 10.5.2013 21:16
Avatar
ngo.andrej
Člen
Avatar
ngo.andrej:

wow díky moc, ještě jen dotaz, kdybych chtěl aby místo prvního velkého, by bylo poslední písmeno velké, tak bych musel změnit tohle:

char prvniPismeno = slova[i][0];

zkusil jsem to přepsat na

char prvniPismeno = slova[i][slova.Length - 1];

, ale nefunguje to, nevíš proč? Díky!

 
Nahoru Odpovědět 10.5.2013 21:28
Avatar
Odpovídá na ngo.andrej
Michal Maršálek:
char posledniPismeno = slova[i][slova[i].Length - 1];

A samotřejmě pak musíš upravit taky:

vystup += " " + slova[i].Substring(0, slova[i].Length - 2) + posledniPismeno;
Editováno 10.5.2013 21:31
 
Nahoru Odpovědět  +1 10.5.2013 21:30
Avatar
ngo.andrej
Člen
Avatar
ngo.andrej:

Páni, díky moc!

 
Nahoru Odpovědět 10.5.2013 21:35
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 7 zpráv z 7.