Minden szó utolsó betűjének nagybetűsítését hogy lehet szépen/hatékonyan megodlani C#-ban?
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?
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:(
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();
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...
Regexet szerintem így lehetne használni:
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.
Itt van példa, hogyan kell használni a MatchEvaluatort.
Itt pedig a Match típus leírása:
Ezek alapján mennie kell...
Kösz, megvan.
Ez a 3 csillagos megoldás:
return Regex.Replace(s, ". |.$", delegate(Match match) { return match.Value.ToUpper(); });
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!