C# Change Characters

Translate

Strings are immutable. If we want to change their characters, we must first convert them to arrays. Then they can be changed in memory before conversion back to a string. We show how to change string characters in this way.

Example

This example uses a series of if-statements to change characters in a string. You can make many mutations in a single pass through the string. This can improve performance. It can also make certain transformations possible.

If

Next:We make three changes: we lowercase characters, and we change the values of spaces and one letter.

C# program that changes characters in string

using System;

class Program
{
    static void Main()
    {
	string input = "Dot Net Perls";
	/*
	 *
	 * Change uppercase to lowercase.
	 * Change space to hyphen.
	 * Change e to u.
	 *
	 * */
	char[] array = input.ToCharArray();
	for (int i = 0; i < array.Length; i++)
	{
	    char let = array[i];
	    if (char.IsUpper(let))
		array[i] = char.ToLower(let);
	    else if (let == ' ')
		array[i] = '-';
	    else if (let == 'e')
		array[i] = 'u';
	}
	string result = new string(array);
	Console.WriteLine(result);
    }
}

Output

dot-nut-purls
Array

The ToCharArray method will cause an allocation upon the managed heap. Then, the new string constructor will allocate another string. Compared to making multiple changes with ToLower and Replace, this approach saves allocations.

Tip:This will reduce memory pressure and ultimately improve runtime performance.

ToCharArrayToLowerReplaceROT13 algorithm

Also, some transformations are simply not possible using standard string methods. For example using ROT13 encoding is best done with the ToCharArray and new string constructor style of code.

Tip:In my testing, using an empty character array and setting its letters one-by-one in the loop yields no performance benefit.

ROT13 Method

One letter

Tip

If you need to change one letter at a certain position (such as the first letter), this approach to string mutation is also ideal. You can call ToCharArray, then set array[0] to the new letter, and then use the new string constructor.

Uppercase First LetterString Constructor

Summary

C# programming language

To change characters in a string, you must use a lower-level representation of the character data, which you can acquire with ToCharArray. You cannot simply assign indexes in a string.

Note:This style of method introduces complexity. It is often best to wrap this logic in a helper method, and call that method.


C#: String