使用StringBuild将字符串更改为小写,仅适用于位置不均匀的字母-c#

问题描述 投票:-1回答:2

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

编写一个程序,询问用户字符串。然后,它将不规则字母(第一,第三...)更改为小写字母,甚至将字母(第二,第四...)更改为大写字母来修改字符串。例如:“ Hello”应如下所示-> hElLo。

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

欢迎任何帮助。

马里奥。

c# stringbuilder uppercase lowercase letter
2个回答
0
投票

嗯,StringBuilder没有ToLower(),但是您可以将char.ToLower用于每个字符

 string source = "Abracadba";

 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

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

0
投票

这不是一个理想的答案,只是想分享一些知识

非常容易。遍历字符串的char,检测char的索引是奇数还是偶数,然后在其中进行工作:

// A simple function to check if a number is odd

public static bool IsOdd(int value)
{
    return value % 2 != 0;
}

// Now looping through the characters

public string ManipulatedString(string str)
{
 string manipulated = "";
 for (int i = 0; i < str.Length; i++)
 {
    if(IsOdd(i))
    {
     manipulated += str[i].ToUpper();
    }
    else
    {
     manipulated += str[i].ToLower();
    }
 }
 return manipulated;
}

希望这会有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.