Kezdőoldal » Számítástechnika » Programozás » Minden szó utolsó betűjének...

Minden szó utolsó betűjének nagybetűsítését hogy lehet szépen/hatékonyan megodlani C#-ban?

Figyelt kérdés

A CodeHunt nevű játék egyik feladata ez. (www pont codehunt pont com)

2 "algoritmust" is írtam rá, de sajnos mindkettő megoldást csak 1 "csillagosra" értékelte a 3-ból:


string res = "";

bool newWord = true;

for (int i = s.Length-1; i >= 0; i--) {

char ch =s[i];

if (ch == ' ') newWord=true;

else if (newWord) { ch = Char.ToUpper(ch); newWord=false; }

res = ch + res;

}

return res;


Második:

s += " ";

string res = "";

for (int i=0; i < s.Length-1; i++)

if (s[i+1] == ' ') res += Char.ToUpper(s[i]);

else res += s[i];

return res;


Hogyan érhetnék el jobb eredményt ezen a pályán?



#Visual C# #CodeHunt
2014. máj. 21. 13:52
 1/8 A kérdező kommentje:

Megpróbáltam string összefűzések nélkül is, char tömbbel:

var chs = s.ToCharArray();

bool newWord = true;

for (int i = chs.Length-1; i >= 0; i--) {

char ch =chs[i];

if (ch == ' ') newWord=true;

else if (newWord) { chs[i] = Char.ToUpper(ch); newWord=false; }

}

return new string(chs);


De ez is csak 1 csillag:(

2014. máj. 21. 13:56
 2/8 Tengor ***** válasza:

A C#-nak vannak beépített kezelő függvényei, azokat nem lehet használni?

res = s.Substring(s.Length-2) + s.Substring(s.Length-1, 1).toUpper();

2014. máj. 21. 14:01
Hasznos számodra ez a válasz?
 3/8 A kérdező kommentje:

De, lehet. Próbáltam azzal is, de az még bonyolultabb.

Mert először splittelni kell, utána minden szóra nagybetűsíteni végét (ahogy írtad), és utána összefűzni.

Úgy emlékszem arra sem kaptam jobb eredményt...

2014. máj. 21. 14:04
 4/8 A kérdező kommentje:
Sőt próbáltam azt, hogy reverse, System.Globalization.TextInfo.ToTitleCase() és utána újra reverse, de ezt a függvényt nem szabad használni.
2014. máj. 21. 14:06
 5/8 A kérdező kommentje:
Viszont regexet lehet használni. Azzal tudok matchelni az utolső betűkre. Ezzel nem lehet valahogy uppercase-esíteni?
2014. máj. 21. 14:09
 6/8 anonim ***** válasza:

Regexet szerintem így lehetne használni:

[link]


Ugye az első kettő paraméter a "miben, mit".

A harmadik lesz az érdekes. Ez gyakorlatilag egy függvény, ami megkapja majd az illeszkedő részt és amit ez a függvény visszaad, arra lesz kicserélve.


[link]

Itt van példa, hogyan kell használni a MatchEvaluatort.


Itt pedig a Match típus leírása:

[link]


Ezek alapján mennie kell...

2014. máj. 21. 14:26
Hasznos számodra ez a válasz?
 7/8 A kérdező kommentje:

Kösz, megvan.

Ez a 3 csillagos megoldás:

return Regex.Replace(s, ". |.$", delegate(Match match) { return match.Value.ToUpper(); });

2014. máj. 21. 14:34
 8/8 anonim ***** válasza:
Szép megoldás :)
2014. máj. 21. 14:40
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!