Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
ngo.andrej
Člen
Avatar
ngo.andrej:10.5.2013 20:18

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:10.5.2013 21:01

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
10.5.2013 21:01
Avatar
Odpovídá na Michal Maršálek
Michal Maršálek:10.5.2013 21:16

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
10.5.2013 21:16
Avatar
ngo.andrej
Člen
Avatar
ngo.andrej:10.5.2013 21:28

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:10.5.2013 21:30
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
10.5.2013 21:30
Avatar
ngo.andrej
Člen
Avatar
ngo.andrej:10.5.2013 21:35

Páni, díky moc!

 
Nahoru Odpovědět
10.5.2013 21:35
Avatar
 
Nahoru Odpovědět
10.5.2013 21:36
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.