解决方案
C#提供了两个方法用于遍历字符串。
1.第一个方法是foreach循环,这个方法快速且容易,但是与第二个方法相比它不太灵活。其使用方法如下:
string testStr = "abc123";
foreach (char c in testStr)
{
Console.WriteLine(c.ToString());
}
2.第二个方法使用for循环而不是foreach循环来遍历字符串。例如:
string testStr = "abc123";
for (int counter = ; counter < testStr.Length; counter++)
{
Console.WriteLine(testStr[counter]);
}
讨论
foreach循环更简单,因此不太容易出错,但其灵活性较差。与之相反,for循环稍微复杂一点,但其灵活性较高。
for循环这种方法使用字符串变量testStr的索引器来获取通过counter循环索引所指示位置上的字符。在使用这种循环机制时,一定要小心不要越出字符串数组的边界。
for循环很灵活,足以改变遍历字符串中的字符的方式。例如,通过简单改变for循环的初始化器和条件表达式可以快速修改循环,使之开始和结束于字符串中的特定位置。
通过修改迭代器表达式使counter变量的递增数量大于1,可以跳过一些字符。还可以修改for循环表达式以逆序遍历字符串,如下所示:
for (int counter = testStr.Length - ; counter >= ; counter--)
{
Console.WriteLine(testStr[counter].ToString());
}
注意:
编译器会最恰当地使用foreach循环来遍历一个向量数组 -- 它开始于0,并且只有一维。把foreach循环转换为另一种循环类型(比如for循环)可能不会导致任何显著的性能改进。
所有这些方法都是使用/optimize编译器选项编译的。使用/optimize标志通常将使得编译过的代码尺寸更小,而不会使之变得更快。代码越小,从磁盘加载它的速度就会更快,并且实时编译它的速度也会更快。