In C# programs, strings are immutable. If we want to change their characters, we must first convert them to arrays.
A char
array can be changed in memory before conversion back to a string
. This is efficient. We show how to change string
characters in this way.
Consider the string
"aaa 123." We may wish to make 2 separate changes in it at once—change the letter, and the whitespace.
INPUT: aaa 123 OUTPUT: bbb-123
We use a series of if
-statements to change characters in a string
. You can make many mutations in a single pass through the string
.
ToCharArray
method will cause an allocation upon the managed heap. Then, the new string
constructor will allocate another string
.ToLower
and Replace
, this approach saves allocations.using System; string input = "aaa 123"; // Change uppercase to lowercase. // Change space to hyphen. // Change a to b. 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 == 'a') { array[i] = 'b'; } } string result = new string(array); Console.WriteLine(result);bbb-123
If you need to change one letter at a certain position (such as the first letter), this approach to string
mutation is also ideal.
To change chars 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
.
This style of method introduces complexity. It is often best to wrap this logic in a helper method, and call that method.