C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
It allows processing for each char. The foreach-loop and the for-loop are available for this purpose. The string indexer returns a char value.
Example. First, we look at two loops where we iterate over each char in a string. The string you loop over can be a string literal, a variable, or a constant. We use the foreach and for-loop.
C# program that uses foreach on string
using System;
class Program
{
    static void Main()
    {
	const string s = "peace";
	foreach (char c in s)
	{
	    Console.WriteLine(c);
	}
	for (int i = 0; i < s.Length; i++)
	{
	    Console.WriteLine(s[i]);
	}
    }
}
Output
p
e
a
c
e
p
e
a
c
e



Performance. For performance, it is sometimes easier for the JIT compiler to optimize the loops if you do not hoist the Length check outside of the for-loop. It is not often helpful to store the length in a local variable.
StringBuilder. For long inputs where we build up an output, a StringBuilder is important. It means we don't have to worry about hundreds or thousands of appends happening in edge cases.
StringBuilderStringBuilder Performance
Regex. Sometimes using a loop is far more efficient than a Regex. Another advantage of loops is the ability to test each character and alert the user to special characters. Loops are imperative and offer more control.
However: Regular expressions offer more power in fewer characters. They are sometimes a better option.
Summary. This simple method loops over each character in a string. The performance here is good because it only needs to make one pass over the string. Often, we use loops to test for special patterns.
Tip: You can find a benchmark of different ways to loop over strings with the for-loop in the C# language on this site.