¿Cuál es la forma más sencilla de revertir el caso de todos los caracteres alfabéticos en una cadena C#? Por ejemplo "aBc1 $;" debería convertirse en "AbC1 $"; Podría escribir fácilmente un método que hace esto, pero estoy esperando que haya una llamada a la biblioteca que no sé que haría que esto sea más fácil. También me gustaría evitar tener una lista de todos los caracteres alfabéticos conocidos y comparar cada carácter con lo que está en la lista. Tal vez esto se puede hacer con expresiones regulares, pero no los conozco muy bien. Gracias.Causa inversa de todos los caracteres alfabéticos en C# cadena
Gracias por la ayuda. Creé un método de extensión de cadena para esto que está principalmente inspirado en la solución de Anthony Pegram, pero sin el LINQ. Creo que esto logra un buen equilibrio entre legibilidad y rendimiento. Esto es lo que se me ocurrió.
public static string SwapCase(this string source) {
char[] caseSwappedChars = new char[source.Length];
for(int i = 0; i < caseSwappedChars.Length; i++) {
char c = source[i];
if(char.IsLetter(c)) {
caseSwappedChars[i] =
char.IsUpper(c) ? char.ToLower(c) : char.ToUpper(c);
} else {
caseSwappedChars[i] = c;
}
}
return new string(caseSwappedChars);
}
Nota: algunas notas de internacionalización en mi respuesta. – ErikE