Recipe2.20.Iterating over Each Character in a String


Recipe 2.20. Iterating over Each Character in a String

Problem

You need to iterate over each character in a string efficiently in order to examine or process each character.

Solution

C# provides two methods for iterating strings. The first is the foreach loop, which can be used as follows:

 string testStr = "abc123"; foreach (char c in testStr) {    Console.WriteLine(c.ToString( )); } 

This method is quick and easy. Unfortunately, it is somewhat less flexible than the second method, which uses the for loop instead of a foreach loop to iterate over the string. For example:

 string testStr = "abc123"; for (int counter = 0; counter < testStr.Length; counter++) {    Console.WriteLine(testStr[counter]); } 

Discussion

The foreach loop is simpler and thus less error-prone, but it lacks flexibility. In contrast, the for loop is slightly more complex, but it makes up for that in flexibility.

The for loop method uses the indexer of the string variable testStr to get the character located at the position indicated by the counter loop index. Care must be taken not to run over the bounds of the string array when using this type of looping mechanism.

A for loop is flexible enough to change how looping over characters in a string is performed. For example, the loop can be quickly modified to start and end at a specific point in the string by simply changing the initializer and conditional expressions of the for loop. Characters can be skipped by changing the iterator expression to increment the counter variable by more than one. The string can also be iterated in reverse order by changing the for loop expressions, as shown:

 for (int counter = testStr.Length - 1; counter >= 0; counter--) {    Console.WriteLine(testStr[counter].ToString( )); } 

The compiler optimizes the use of a foreach loop iterating through a vector arrayone that starts at zero and has only one dimension. Converting a foreach loop to another type of loop, such as a for loop, may not produce any noticeable increases in performance.


It should be noted that each of these methods was compiled using the /optimize compiler option. However, adding or removing this option has very little impact on the resulting Microsoft Intermediate Language (IL) code.



C# Cookbook
Secure Programming Cookbook for C and C++: Recipes for Cryptography, Authentication, Input Validation & More
ISBN: 0596003943
EAN: 2147483647
Year: 2004
Pages: 424

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net