我目前正在通过在线教程学习c#。到目前为止,我已经能够解决所有练习,但是我无法弄清楚:
编写一个程序,询问用户字符串。然后,它将不规则字母(第一,第三...)更改为小写字母,甚至将字母(第二,第四...)更改为大写字母来修改字符串。例如:“ Hello”应如下所示-> hElLo。
我首先将字符串转换为大写,所以我只需要做小写部分。在本练习中,我应该使用StringBuilder,但无法弄清楚。我想也许可以通过for循环遍历每个字母并更改那些i%2!= 0,但StringBuilder无法使用ToLower()。我想不出一种方法来更改它ToString(),ToLower(),然后将其添加到字符串的末尾。
欢迎任何帮助。
马里奥。
嗯,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)));
这不是一个理想的答案,只是想分享一些知识
非常容易。遍历字符串的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;
}
希望这会有所帮助