将大写字母替换为小写字母 - 反之亦然

Ash*_*214 1 c# string

输入字符串:“这是一个字符串” 输出“tTHIS IS A sSTRING

我能够将大写字母转换为小写字母,但不知何故我无法链接它们:(。

这是我的代码..有人可以帮我吗?

static void Main()
{
    string lstr = "";
    string ustr = "";
    Console.WriteLine("Enter the string");
    string str = Console.ReadLine();

    char[] strchararr = str.ToCharArray();

    for (int i = 0; i < strchararr.Length; i++)
    {

        if (strchararr[i]>='a'&& strchararr[i]<='z')
        {
            ustr += char.ToUpper(strchararr[i]);

        }

        else if (strchararr[i] >= 'A' && strchararr[i] <= 'Z')
        {
            lstr+=char.ToLower(strchararr[i]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

AAA*_*ddd 5

使用linq

var converted = str.Select(x => char.IsUpper(x) ? char.ToLower(x) : char.ToUpper(x));
var result = new string(converted.ToArray);
Run Code Online (Sandbox Code Playgroud)

或者一种foreach方法

foreach (var c in str)
   if (char.IsUpper(c))
      result += char.ToLower(c);
   else 
      result += char.ToUpper(c);
Run Code Online (Sandbox Code Playgroud)

或者

foreach (var c in str)
    result += char.IsUpper(c) ? char.ToLower(c) : char.ToUpper(c);
Run Code Online (Sandbox Code Playgroud)

或一个for循环

for (int i = 0; i < str.Length; i++)
   if (char.IsUpper(str[i]))
      result += char.ToLower(str[i]);
   else 
      result += char.ToUpper(str[i]);
Run Code Online (Sandbox Code Playgroud)

或者

for (var i = 0; i < str.Length; i++)
     result += char.IsUpper(str[i]) ? char.ToLower(str[i]) : char.ToUpper(str[i]);
Run Code Online (Sandbox Code Playgroud)

或者一个可笑的愚蠢(但超级高效)的unsafe指针版本(仅限 ASCII)

fixed (char* cStr = str)
   for (var c = cStr; c < cStr + str.Length; c++)
     *c = (char)(*c >= 'A' && *c <= 'Z' ? *c + 32 : *c >= 'a' && *c <= 'z' ? *c - 32 : *c);
Run Code Online (Sandbox Code Playgroud)