我需要在一个句子中交替使用这个案例而且我不知道该怎么做。 例如:
thequickbrownfoxjumpsoverthelazydog
到
GoDyZaLeHtReVoSpMuJxOfNwOrBkCiUqEhT
到目前为止这是我的代码
Console.WriteLine("Please enter a sentence:");
string text = Console.ReadLine();
text = text.Replace(" ", "");
char[] reversed = text.ToCharArray();//String to char
Array.Reverse(reversed);//Reverses char
new string(reversed);//Char to string
Console.WriteLine(reversed);
Console.ReadLine();
请注意,由于某种原因没有空格,因为这也是家庭作业的一部分。
答案 0 :(得分:2)
字符串是不可变的,因此,您需要将其转换为char []。
char[] characters = text.ToCharArray();
for (int i = 0; i < characters.Length; i+=2) {
characters[i] = char.ToUpper(characters[i]);
}
text = new string(characters);
答案 1 :(得分:1)
没有必要扭转你的字符串。只是大写你的字符串中的偶数索引字符。
请记住,我的文化是tr-TR
,这种String.ToUpper
方法的工作取决于您当前的线索文化。在此示例中,您的输出可能与我的输出不同。
这是LINQPad;
中的示例string s = "thequickbrownfoxjumpsoverthelazydog";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.Length; i++)
{
if (i % 2 == 0)
{
sb.Append(s[i].ToString().ToUpper());
}
else
{
sb.Append(s[i].ToString());
}
}
sb.ToString().Dump();
输出将是;
ThEqUiCkBrOwNfOxJuMpSoVeRtHeLaZyDoG
答案 2 :(得分:0)
LINQ的另一个可能解决方案可以在一行中完成:
string s = "thequickbrownfoxjumpsoverthelazydog";
string result = new String(s
// take each character
.ToCharArray()
// convert every character at even index to upper
.Select ((character, index) => (index % 2) == 0 ? Char.ToUpper(character) : character)
// back to array in order to create a string
.ToArray());
Console.WriteLine(result);
输出结果为:
ThEqUiCkBrOwNfOxJuMpSoVeRtHeLaZyDoG
此解决方案使用indexed LINQ Select clause来访问当前索引和当前投影的值。
答案 3 :(得分:0)
一个班轮:
new string(myString.Select((c, i) => i % 2 == 0 ? char.ToUpper(c) : c).ToArray())
扩展方法:
public static string AltCase(this string s)
{
return new string(s.Select((c, i) => i % 2 == 0 ? char.ToUpper(c) : c).ToArray());
}