Several of the answers here lack fallbacks for Unicode.
static string ToggleCaseHA(string str) {
char[] chs = str.ToCharArray();
for (int i = chs.Length - 1; i >= 0; i--) {
char ch = chs[i];
char foo = (char)(ch & ~0x20);
if ((foo >= 0x41 && foo <= 0x5a) || (foo >= 0xc0 && foo <= 0xde && foo != 0xd7))
chs[i] = (char)(ch ^ 0x20);
else if (foo == 0xdf || (ch > 0xff && char.IsLetter(ch))
chs[i] = char.IsLower(ch) ? char.ToUpper(ch) : char.ToLower(ch);
}
return new string(chs);
}
Note by Alex Bell: this algorithm was included in test set at:
http://webinfocentral.com/resources/toggleCaseAlgorithm.aspx[
^] .
This algorithm indeed can process the Unicode String, but so can do all other algorithms (Alternate 1, Alternate 2, etc.) except for the "
TogglebyCeChode
" (which is the fastest, but does not work on Unicode text).
After sample testing, this proposed algorithm demonstrated just a marginal performance increase over Alternate 1 and Alternate 2.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.