【发布时间】:2011-04-10 12:58:43
【问题描述】:
在 C# 字符串中反转所有字母字符的大小写的最简单方法是什么?例如“aBc1$;”应该变成“AbC1$;”我可以很容易地编写一个方法来做到这一点,但我希望有一个我不知道的库调用会使这更容易。我还想避免列出所有已知的字母字符并将每个字符与列表中的内容进行比较。也许这可以用正则表达式来完成,但我不太了解它们。谢谢。
感谢您的帮助。我为此创建了一个字符串扩展方法,主要受 Anthony Pegram 的解决方案启发,但没有 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);
}
【问题讨论】:
-
注意:我的回答中有一些国际化说明。
标签: c# regex case-sensitive