Обратный регистр всех буквенных символов в строке C #

Каков самый простой способ изменить регистр всех буквенных символов в строке C #? Например, «aBc1 $;» должен стать "AbC1 $;" Я мог бы легко написать метод, который делает это, но я надеюсь, что вызов библиотеки, о котором я не знаю, упростил бы это. Я также хотел бы избежать наличия списка всех известных буквенных символов и сравнения каждого символа с тем, что находится в списке. Может быть, это можно сделать с помощью регулярных выражений, но я их не очень хорошо знаю. Спасибо.

Спасибо за помощь. Я создал для этого метод расширения строки, который в основном вдохновлен решением Энтони Пеграма, но без LINQ. Я думаю, что это обеспечивает хороший баланс между удобочитаемостью и производительностью. Вот что я придумал.

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);
}
7
задан still_dreaming_1 11 September 2010 в 18:38
поделиться