Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
StringBuilder methods and performance
📖 Scenario: You are creating a simple program to build a sentence by adding words one by one. Using StringBuilder helps make this faster and easier than using normal string concatenation.
🎯 Goal: Build a sentence step-by-step using StringBuilder methods and then display the final sentence.
📋 What You'll Learn
Create a StringBuilder object called sentenceBuilder.
Add words to sentenceBuilder using the Append method.
Insert a word at a specific position using the Insert method.
Replace a word using the Replace method.
Print the final sentence using ToString().
💡 Why This Matters
🌍 Real World
StringBuilder is used in programs that build text dynamically, like creating messages, reports, or logs efficiently.
💼 Career
Understanding StringBuilder helps write faster and more memory-efficient C# code, a valuable skill for software developers.
Progress0 / 4 steps
1
Create a StringBuilder object
Create a StringBuilder object called sentenceBuilder and initialize it with the string "Hello".
C Sharp (C#)
Hint
Use new StringBuilder("Hello") to create the object.
2
Add words using Append
Use the Append method on sentenceBuilder to add the words " World" and then "!".
C Sharp (C#)
Hint
Call sentenceBuilder.Append(" World") and then sentenceBuilder.Append("!").
3
Insert and Replace words
Use the Insert method to add the word "Beautiful " at position 6 in sentenceBuilder. Then use the Replace method to change "Hello" to "Hi".
C Sharp (C#)
Hint
Use sentenceBuilder.Insert(6, "Beautiful ") and sentenceBuilder.Replace("Hello", "Hi").
4
Print the final sentence
Print the final sentence by converting sentenceBuilder to a string using ToString() and printing it with Console.WriteLine.
C Sharp (C#)
Hint
Use Console.WriteLine(sentenceBuilder.ToString()) to show the sentence.
Practice
(1/5)
1. What is the main advantage of using StringBuilder over regular string concatenation in C#?
easy
A. It modifies the string without creating new string copies, improving performance.
B. It automatically sorts the characters in the string.
C. It encrypts the string for security.
D. It converts strings to uppercase by default.
Solution
Step 1: Understand string immutability in C#
Regular strings cannot be changed once created, so concatenation creates new strings each time.
Step 2: How StringBuilder works
StringBuilder changes the text in place without making new copies, which is faster for many changes.
Final Answer:
It modifies the string without creating new string copies, improving performance. -> Option A
Quick Check:
StringBuilder avoids new copies [OK]
Hint: StringBuilder changes text without copying strings [OK]
Common Mistakes:
Thinking StringBuilder sorts or encrypts text
Believing StringBuilder changes case automatically
Confusing StringBuilder with regular string methods
2. Which of the following is the correct way to append text to a StringBuilder named sb?
easy
A. sb.Append("Hello");
B. sb.Add("Hello");
C. sb.Insert("Hello");
D. sb.Concat("Hello");
Solution
Step 1: Recall StringBuilder methods
Append is the method used to add text at the end of the current content.
Step 2: Check method names
Add and Concat are not valid StringBuilder methods; Insert adds text at a specific position, not at the end.
Final Answer:
sb.Append("Hello"); -> Option A
Quick Check:
Append adds text at end [OK]
Hint: Use Append() to add text at the end [OK]
Common Mistakes:
Using Add() which does not exist
Confusing Insert() with Append()
Trying to use Concat() on StringBuilder
3. What will be the output of the following C# code?
var sb = new System.Text.StringBuilder("Hi");
sb.Append(" there");
sb.Replace("Hi", "Hello");
sb.Remove(5, 1);
Console.WriteLine(sb.ToString());
medium
A. Hello here
B. Hello there
C. Hellothere
D. Hi there
Solution
Step 1: Trace Append and Replace
Start with "Hi", Append adds " there" -> "Hi there". Replace "Hi" with "Hello" -> "Hello there".
Step 2: Apply Remove
Remove(5,1) removes 1 character at index 5 (0-based). Index 5 is the space between "Hello" and "there", so removing it joins words -> "Hellothere".
Final Answer:
Hellothere -> Option C
Quick Check:
Remove space at index 5 = "Hellothere" [OK]
Hint: Remember Remove(index, count) deletes characters at index [OK]
Common Mistakes:
Forgetting zero-based index in Remove
Assuming Replace changes all occurrences incorrectly
Not converting StringBuilder to string before printing
4. Identify the error in this code snippet:
var sb = new System.Text.StringBuilder();
sb.Append("Start");
sb.Remove(10, 3);
Console.WriteLine(sb.ToString());
medium
A. ToString method is missing parentheses.
B. Append method is used incorrectly.
C. StringBuilder cannot be empty when created.
D. Remove method call will throw an ArgumentOutOfRangeException.
Solution
Step 1: Check Remove parameters
Remove(10, 3) tries to remove 3 characters starting at index 10, but current string length is 5 ("Start").
Step 2: Understand exception
Removing beyond string length causes ArgumentOutOfRangeException at runtime.
Final Answer:
Remove method call will throw an ArgumentOutOfRangeException. -> Option D
Quick Check:
Remove index out of range = Exception [OK]
Hint: Check Remove index is within current length [OK]
Common Mistakes:
Assuming Remove silently ignores invalid indexes
Thinking Append is incorrect here
Believing ToString needs no parentheses
5. You want to build a comma-separated list of numbers from 1 to 5 using StringBuilder. Which code snippet is the most efficient and correct?
hard
A. var sb = new StringBuilder();
for(int i=1; i<=5; i++) {
sb.Append(i).Append(",");
}
sb.Remove(sb.Length - 2, 1);
Console.WriteLine(sb.ToString());
B. var sb = new StringBuilder();
for(int i=1; i<=5; i++) {
sb.Append(i);
if(i < 5) sb.Append(",");
}
Console.WriteLine(sb.ToString());
C. var sb = new StringBuilder();
sb.Append("1,2,3,4,5,");
Console.WriteLine(sb.ToString());
D. var sb = new StringBuilder();
for(int i=1; i<=5; i++) {
sb.Append(i + ",");
}
Console.WriteLine(sb.ToString());
Solution
Step 1: Appending comma after each number then removing trailing
Appends number and comma each time, then removes last comma. Remove call adds overhead.
Step 2: Conditional comma append
Appends number, then comma only if not last number. Avoids extra Remove call, more efficient and clear.
Step 3: Analyze options B and C
B appends comma after last number, no removal, so extra comma remains. C hardcodes string, no loop, less flexible.
Final Answer:
sb.Append(i);
if(i < 5) sb.Append(","); -> Option B
Quick Check:
Append comma conditionally [OK]
Hint: Add comma only between items, not after last [OK]