Bird
Raised Fist0
Rubyprogramming~20 mins

String concatenation and << in Ruby - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Ruby String Concatenation Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Ruby code?
Consider the following Ruby code snippet. What will be printed when it runs?
Ruby
str = "Hello"
str << " World"
puts str
AHelloWorld
BHello World\n
CHello World
DHello << World
Attempts:
2 left
💡 Hint
The << operator appends the string on the right to the string on the left with a space if included.
❓ Predict Output
intermediate
2:00remaining
What does this code print?
What will be the output of this Ruby code?
Ruby
a = "foo"
b = a
b << "bar"
puts a
Afoobar
Bfoo
Cbar
Dfoobarbar
Attempts:
2 left
💡 Hint
Remember that << modifies the original string in place.
🔧 Debug
advanced
2:00remaining
Why does this code raise an error?
This Ruby code raises an error. What is the cause?
Ruby
str = nil
str << "test"
ANoMethodError because nil does not have << method
BRuntimeError because string is empty
CTypeError because << expects a number
DSyntaxError due to missing quotes
Attempts:
2 left
💡 Hint
Check what methods nil supports.
🧠 Conceptual
advanced
2:00remaining
What is the difference between + and << for strings in Ruby?
Choose the correct statement about the difference between + and << when used with strings in Ruby.
A+ and << both modify the original string in place
B+ modifies the original string, << creates a new string object
C+ and << both create new string objects
D+ creates a new string object, << modifies the original string in place
Attempts:
2 left
💡 Hint
Think about whether the original string changes after using + or <<.
❓ Predict Output
expert
3:00remaining
What is the final output of this Ruby code?
Analyze the following Ruby code and determine what it prints.
Ruby
str1 = "abc"
str2 = str1
str1 += "def"
str2 << "xyz"
puts str1
puts str2
Aabcdef\nabcdef
Babcdef\nabcxyz
Cabcxyz\nabcxyz
Dabcdefxyz\nabcdefxyz
Attempts:
2 left
💡 Hint
Remember that += creates a new string object, while << modifies the original.

Practice

(1/5)
1. What is the main difference between + and << when used with strings in Ruby?
easy
A. + creates a new string, << modifies the original string.
B. + modifies the original string, << creates a new string.
C. Both + and << create new strings without modifying the original.
D. Both + and << modify the original string in place.

Solution

  1. Step 1: Understand + behavior

    The + operator joins two strings but returns a new string without changing the original.
  2. Step 2: Understand << behavior

    The << operator appends text directly to the original string, modifying it in place.
  3. Final Answer:

    + creates a new string, << modifies the original string. -> Option A
  4. Quick Check:

    + new string, << modifies original [OK]
Hint: Remember: + new string, << changes original [OK]
Common Mistakes:
  • Thinking + changes the original string
  • Confusing << with creating a new string
  • Assuming both operators behave the same
2. Which of the following is the correct syntax to append " world" to the string variable greeting using << in Ruby?
easy
A. greeting.add(" world")
B. greeting + " world"
C. greeting.append(" world")
D. greeting << " world"

Solution

  1. Step 1: Identify the correct operator for appending

    In Ruby, << is used to append text to an existing string variable.
  2. Step 2: Check syntax correctness

    greeting << " world" correctly appends " world" to greeting. Other options are either invalid methods or use + which does not modify in place.
  3. Final Answer:

    greeting << " world" -> Option D
  4. Quick Check:

    Use << to append text in place [OK]
Hint: Use << to add text directly to string [OK]
Common Mistakes:
  • Using + which creates a new string
  • Trying to use non-existent methods like add
  • Confusing method names like append which is not standard
3. What will be the output of the following Ruby code?
str = "Hi"
str << " there"
puts str
medium
A. Hi there
B. Hi
C. ereht iH
D. Error: undefined method << for String

Solution

  1. Step 1: Analyze the initial string and operation

    The variable str starts as "Hi". The << operator appends " there" to it, modifying str to "Hi there".
  2. Step 2: Understand the output of puts

    puts str prints the string with a newline, but the output shown is the string content without the newline character visible.
  3. Final Answer:

    Hi there -> Option A
  4. Quick Check:

    Appending with << changes string to "Hi there" [OK]
Hint: Remember << adds text inside original string [OK]
Common Mistakes:
  • Expecting str to remain "Hi"
  • Confusing puts output with return value
  • Thinking << causes an error
4. Identify the error in the following Ruby code snippet:
text = "Hello"
text +<< " World"
puts text
medium
A. No error; output is "Hello World"
B. SyntaxError due to incorrect use of +<<
C. RuntimeError because text is immutable
D. Output is "Hello" because + does not modify original

Solution

  1. Step 1: Check the operator usage

    The code uses +<< together, which is not a valid Ruby operator or syntax.
  2. Step 2: Understand Ruby syntax rules

    Ruby does not allow chaining + and << without spaces or parentheses; this causes a syntax error.
  3. Final Answer:

    SyntaxError due to incorrect use of +<< -> Option B
  4. Quick Check:

    Invalid operator +<< causes syntax error [OK]
Hint: Operators + and << cannot be combined directly [OK]
Common Mistakes:
  • Assuming +<< is valid syntax
  • Expecting + to modify original string
  • Ignoring syntax errors from invalid operators
5. You want to build a sentence step by step by appending words stored in an array words = ["I", "love", "Ruby"]. Which code snippet correctly uses << to create the sentence with spaces between words?
hard
A. sentence = ""; words.each { |w| sentence + w + " " }; sentence.strip!
B. sentence = ""; words.each { |w| sentence = w + " " }; sentence.strip!
C. sentence = ""; words.each { |w| sentence << w << " " }; sentence.strip!
D. sentence = ""; words.each { |w| sentence + w << " " }; sentence.strip!

Solution

  1. Step 1: Understand how to append words with spaces

    We want to add each word and a space to the same string sentence using << which modifies in place.
  2. Step 2: Analyze each option

    sentence = ""; words.each { |w| sentence + w + " " }; sentence.strip! computes a new concatenated string but doesn't assign it back.sentence = ""; words.each { |w| sentence = w + " " }; sentence.strip! overwrites sentence with the current word + space each time.sentence = ""; words.each { |w| sentence << w << " " }; sentence.strip! correctly chains << to append the word then the space in place.sentence = ""; words.each { |w| sentence + w << " " }; sentence.strip! creates and modifies a temporary string but discards the result.
  3. Final Answer:

    sentence = ""; words.each { |w| sentence << w << " " }; sentence.strip! -> Option C
  4. Quick Check:

    Use chained << to append multiple strings [OK]
Hint: Chain << to append multiple strings efficiently [OK]
Common Mistakes:
  • Using + which creates new strings inside loop
  • Mixing + and << incorrectly
  • Forgetting to remove trailing space with strip!
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard