解決方案
C#提供了兩個方法用於遍歷字符串。
1.第一個方法是foreach循環,這個方法快速且容易,但是與第二個方法相比它不太靈活。其使用方法如下:
string testStr = "abc123"; foreach (char c in testStr) { Console.WriteLine(c.ToString()); }
2.第二個方法使用for循環而不是foreach循環來遍歷字符串。例如:
string testStr = "abc123"; for (int counter = 0; counter < testStr.Length; counter++) { Console.WriteLine(testStr[counter]); }
討論
foreach循環更簡單,因此不太容易出錯,但其靈活性較差。與之相反,for循環稍微復雜一點,但其靈活性較高。
for循環這種方法使用字符串變量testStr的索引器來獲取通過counter循環索引所指示位置上的字符。在使用這種循環機制時,一定要小心不要越出字符串數組的邊界。
for循環很靈活,足以改變遍歷字符串中的字符的方式。例如,通過簡單改變for循環的初始化器和條件表達式可以快速修改循環,使之開始和結束於字符串中的特定位置。
通過修改迭代器表達式使counter變量的遞增數量大於1,可以跳過一些字符。還可以修改for循環表達式以逆序遍歷字符串,如下所示:
for (int counter = testStr.Length - 1; counter >= 0; counter--) { Console.WriteLine(testStr[counter].ToString()); }
注意:
編譯器會最恰當地使用foreach循環來遍歷一個向量數組 -- 它開始於0,並且只有一維。把foreach循環轉換為另一種循環類型(比如for循環)可能不會導致任何顯著的性能改進。
所有這些方法都是使用/optimize編譯器選項編譯的。使用/optimize標志通常將使得編譯過的代碼尺寸更小,而不會使之變得更快。代碼越小,從磁盤加載它的速度就會更快,並且實時編譯它的速度也會更快。