Search⌘ K
AI Features

Modifying Strings: Inserting, Deleting, and Replacing Characters

Discover how to effectively modify strings in JavaScript despite their immutability. This lesson teaches how to insert, delete, and replace characters or substrings using array conversion, slicing, and built-in methods. You will understand the time complexity and practical techniques for efficient string manipulation.

By now, you understand that strings in JavaScript are immutable and that every operation that appears to modify a string actually produces a new one. That raises a practical question that needs a direct answer: if strings cannot be changed in place, how do you perform the kinds of modifications that real programs and algorithms constantly require? Inserting a character at a specific position, removing an unwanted character, and replacing one substring with another are fundamental operations. Understanding how to perform them correctly and efficiently is what well cover now.

Inserting a character

Inserting a character at a specific position means placing a new character at a given index and shifting every character from that position onward one step to the right to accommodate it.

Consider the string "helo" and the requirement to insert the character 'l' at index 3.

Before: h e l o
Index: 0 1 2 3
After: h e l l o
Index: 0 1 2 3 4

The character 'o' that was at index 3 has moved to index 4 to make room for the inserted character. In general, inserting at position ii requires shifting every character from index ii to the end of the string one position to the right. In the worst case, inserting at the beginning of the string requires shifting all nn existing characters, making insertion an O(n)O(n) operation.

Insertion method 1

In JavaScript, because strings are immutable, insertion can be implemented by converting the string into an array of characters, performing the insertion on the array, and joining the result back into a string.

Javascript (babel-node)
let s = "helo";
let chars = s.split("");
chars.splice(3, 0, 'l');
let result = chars.join("");
console.log(`Original string: "${s}"\n`);
console.log(`After insertion: "${result}"`);

The list conversion costs O(n)O(n), the ...