Sprache: C#
Der Code funktioniert nur mit ASCII Codierung. Aber das Prinzip läßt sich auch auf andere Kodierungen übertragen. Da Zeiger verwendet werden, muß zur Kompilierung /unsafe verwendet werden.
public void countUpperLower (string a, out int upper, out int lower) {
lower = 0; upper = 0;
unsafe {
fixed (char* cTmp = a) {
char* c = cTmp;
char* end = c + a.Length;
while (c < end) {
if (*c > 64 && *c < 91 )
upper++;
if (*c > 96 && *c < 123)
lower++;
c++;
}
}
}
}
public void countUpperLower (string a, out int upper, out int lower) {
lower = 0; upper = 0;
unsafe {
fixed (char* cTmp = a) {
char* c = cTmp;
char* end = c + a.Length;
while (c < end) {
if (*c > 64 && *c < 91 )
upper++;
if (*c > 96 && *c < 123)
lower++;
c++;
}
}
}
}
Alte URL:
/snippet/gross-kleinbuchstaben-in-string-schnell-zaehlen/648
Sorry hab da mal ne Frage.
Was für eine Bedeutung hat das [b]out[/b] ?
Ist das, das gleiche wie ein [b]ref[/b] ?
out bedeutet dass die variable nicht in der aufrufenden methode initialisiert sein muss. ref bedeutet dass ein Pointer in die funktion übergeben wird was nur bei valuetypes notwendig ist.
Wenn ich einer Funktion eine Variable mit Hilfe von [b]out[/b] übergebe… dann wird diese Variable also (wie bei [b]ref[/b]) auch Funktionsextern verändert ?
Right