C# 用小写字母替换大写字母,反之亦然
输入字符串:这是一个字符串 输出t这是一个字符串 我能够将大写字母转换为小写字母,但不知何故,我无法将它们链接起来: 这是我的密码。。有人能帮帮我吗C# 用小写字母替换大写字母,反之亦然,c#,string,C#,String,输入字符串:这是一个字符串 输出t这是一个字符串 我能够将大写字母转换为小写字母,但不知何故,我无法将它们链接起来: 这是我的密码。。有人能帮帮我吗 static void Main() { string lstr = ""; string ustr = ""; Console.WriteLine("Enter the string"); string str = Console.ReadLine(); char[] strchararr = str.T
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]);
}
}
}
我想你说的链接是指如何得到一个完整的结果字符串? 在这种情况下,不需要同时使用lstr和ustr变量,只需使用一个 例如: 更换线路
ustr += char.ToUpper(strchararr[i]);
与
我想你说的链接是指如何得到一个完整的结果字符串? 在这种情况下,不需要同时使用lstr和ustr变量,只需使用一个 例如: 更换线路
ustr += char.ToUpper(strchararr[i]);
与
使用linq
var converted = str.Select(x => char.IsUpper(x) ? char.ToLower(x) : char.ToUpper(x));
var result = new string(converted.ToArray);
或者是一种foreach方法
或
还是一个for循环
使用linq
var converted = str.Select(x => char.IsUpper(x) ? char.ToLower(x) : char.ToUpper(x));
var result = new string(converted.ToArray);
或者是一种foreach方法
或
还是一个for循环
您的代码有一些问题 您使用的是两个字符串ustr和lstr。您应该使用一个字符串来存储结果,并将char.ToLower和char.ToUpper的结果附加到该字符串 除了A-Z和A-Z之外,您也没有处理任何其他事情。您应该添加一个else块,只附加任何不需要转换的字符
char[] strchararr = str.ToCharArray();
for (int i = 0; i < strchararr.Length; i++)
{
if (strchararr[i]>='a'&& strchararr[i]<='z')
{
finalString += char.ToUpper(strchararr[i]);
}
else if (strchararr[i] >= 'A' && strchararr[i] <= 'Z')
{
finalString+=char.ToLower(strchararr[i]);
} else {
finalString += strchararr[i];
}
}
Console.WriteLine(finalString);
如果您想处理其他字母表中的字母,例如西里尔文、希腊文,则应使用和检查大小写。您的代码有一些问题 您使用的是两个字符串ustr和lstr。您应该使用一个字符串来存储结果,并将char.ToLower和char.ToUpper的结果附加到该字符串 除了A-Z和A-Z之外,您也没有处理任何其他事情。您应该添加一个else块,只附加任何不需要转换的字符
char[] strchararr = str.ToCharArray();
for (int i = 0; i < strchararr.Length; i++)
{
if (strchararr[i]>='a'&& strchararr[i]<='z')
{
finalString += char.ToUpper(strchararr[i]);
}
else if (strchararr[i] >= 'A' && strchararr[i] <= 'Z')
{
finalString+=char.ToLower(strchararr[i]);
} else {
finalString += strchararr[i];
}
}
Console.WriteLine(finalString);
如果要处理其他字母表中的字母,如西里尔文、希腊文,应使用和检查大小写。以字符作为数字:
当所有字符的代码点低于256时适用
以字符作为数字:
当所有字符的代码点低于256时适用
你是什么意思,但不知为什么我无法链接它们检查Char.IsUpper或Char.IsLower,然后使用Char.ToUpper或Char.tolower你是什么意思,但不知为什么我无法链接它们检查Char.IsUpper或Char.IsLower,然后使用Char.ToUpper或Char.ToLowerresult+=-你真的在循环中向字符串添加字符吗?@AntonínLejsek不,环顾四周神经紧张Lyresult+=-你真的在循环中向字符串添加字符吗?@AntonínLejsek不,环顾四周神经紧张非常感谢你的帮助和解释。这完全有道理。@Ash0214请考虑通过单击该复选标记接受您认为最好的答案!非常感谢您的帮助和解释。这完全有道理。@Ash0214请考虑通过单击该复选标记接受您认为最好的答案!
for (var i = 0; i < str.Length; i++)
result += char.IsUpper(str[i]) ? char.ToLower(str[i]) : char.ToUpper(str[i]);
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);
char[] strchararr = str.ToCharArray();
for (int i = 0; i < strchararr.Length; i++)
{
if (strchararr[i]>='a'&& strchararr[i]<='z')
{
finalString += char.ToUpper(strchararr[i]);
}
else if (strchararr[i] >= 'A' && strchararr[i] <= 'Z')
{
finalString+=char.ToLower(strchararr[i]);
} else {
finalString += strchararr[i];
}
}
Console.WriteLine(finalString);
StringBuilder sb = new StringBuilder(input.Length);
foreach (char c in input)
sb.Append(!char.IsLetter(c) ? c : c < 97 ? (char)(c + 32) : (char)(c - 32));