首页 > 解决方案 > 使用 StringBuild 将字符串更改为小写,仅用于不均匀定位的字母

问题描述

我目前正在通过在线教程学习 c#。到目前为止,我已经能够解决每一个练习,但这个我无法弄清楚:

编写一个程序,询问用户一个字符串。然后它将通过将不均匀的字母(第一个,第三个...)更改为小写,甚至将字母(第二个,第四个...)更改为大写字母来修改字符串。例如:“Hello”应该是这样的 --> hElLo。

我首先将字符串转换为大写,所以我只需要做小写部分。在本练习中,我应该使用 StringBuilder,但我无法弄清楚。我想也许通过for 循环我可以遍历每个字母并更改那些i%2 != 0StringBuilder 不能使用的字母ToLower()。我想不出改变它的方法ToString()ToLower()然后将它添加到字符串的末尾。

欢迎任何帮助。

马里奥。

标签: c#stringbuilderuppercaselowercaseletter

解决方案


好吧,StringBuilder没有ToLower(),但您可以char.ToLower每个字符使用:

 string source = "Abracadba";

 StringBuilder sb = new StringBuilder(source.Length);

 for (int i = 0; i < source.Length; ++i) {
   sb.Append(i % 2 != 0
     ? char.ToUpper(source[i]) 
     : char.ToLower(source[i]));
 }

 string result = sb.ToString();

同样的想法,Linq实现:

 using System.Linq;

 ...

 string result = string.Concat(source
   .Select((c, i) => i % 2 != 0 ? char.ToUpper(c) : char.ToLower(c)));

推荐阅读