为何使用Char.ToLower()无法将字符串中的字符转为小写?
问题解决:Char.ToLower()和String.ToLower()无效果的原因及修复
Char.ToLower()失效的原因及修复
char.ToLower()是纯方法,它不会修改传入的字符本身,而是返回一个新的小写字符。你的代码只调用了方法,但没把返回值赋值回数组对应位置,所以原数组完全没变化。
修复后的代码:
Console.Clear(); string rightWord = "Arose"; char[] rightWordArray = rightWord.ToCharArray(); for (int i = 0; i < rightWord.Length; i++) { if (char.IsUpper(rightWordArray[i])) { // 将返回的小写char赋值回数组 rightWordArray[i] = char.ToLower(rightWordArray[i]); } } foreach (var item in rightWordArray) { Console.WriteLine(item); }
String.ToLower()失效的原因及修复
C#里的字符串是不可变类型,所有字符串修改方法都会返回新的字符串对象,不会改变原字符串。如果只是调用rightWord.ToLower()却不接收返回值,原字符串自然不会变化。
修复示例:
Console.Clear(); string rightWord = "Arose"; // 接收返回的新字符串 rightWord = rightWord.ToLower(); foreach (var item in rightWord) { Console.WriteLine(item); }
更简洁的写法
如果不需要操作字符数组,直接用字符串方法一步到位即可:
string rightWord = "Arose"; string lowerWord = rightWord.ToLower(); Console.WriteLine(lowerWord); // 输出 "arose"
内容的提问来源于stack exchange,提问作者Darre
相关产品推荐
相关产品推荐

