📖 Scenario: You work at a bookstore that keeps book titles in a list. You want to extract parts of these titles to create short labels.
🎯 Goal: Learn how to slice and index strings in Ruby to get parts of book titles.
📋 What You'll Learn
Create a string variable with a book title
Create a variable for the start index
Use string slicing to get a substring
Print the sliced substring
💡 Why This Matters
🌍 Real World
Extracting parts of strings is useful when creating labels, previews, or summaries from longer text.
💼 Career
String slicing is a basic skill needed in many programming jobs, including web development, data processing, and automation.
Progress0 / 4 steps
1
Create a book title string
Create a string variable called book_title and set it to the exact value "The Ruby Programming Language".
Ruby
Hint
Use = to assign the string to the variable book_title.
2
Set the start index for slicing
Create a variable called start_index and set it to the exact number 4.
Ruby
Hint
Remember to use = to assign the number 4 to start_index.
3
Slice the string to get a substring
Create a variable called short_label that slices book_title starting at start_index and takes exactly 4 characters.
Ruby
Hint
Use string[start, length] syntax to slice the string.
4
Print the sliced substring
Write a puts statement to print the value of short_label.
Ruby
Hint
Use puts short_label to display the substring.
Practice
(1/5)
1. In Ruby, what does str[0] return when str = "hello"?
easy
A. The first character of the string, 'h'
B. The entire string 'hello'
C. The last character of the string, 'o'
D. An error because indexing starts at 1
Solution
Step 1: Understand Ruby string indexing
Ruby strings are indexed starting at 0, so the first character is at index 0.
Step 2: Apply indexing to the string 'hello'
Accessing str[0] returns the first character 'h'.
Final Answer:
The first character of the string, 'h' -> Option A
Quick Check:
Index 0 = 'h' [OK]
Hint: Remember Ruby indexes start at zero for strings [OK]
Common Mistakes:
Thinking indexing starts at 1
Expecting the whole string instead of one character
Confusing last character with first
2. Which of the following is the correct way to get the substring 'ell' from str = "hello" using slicing?
easy
A. str[1,3]
B. str[0,3]
C. str[2..4]
D. str[1...3]
Solution
Step 1: Understand slicing syntax
In Ruby, str[start, length] extracts a substring starting at start with length characters.
Step 2: Extract 'ell' from 'hello'
'ell' starts at index 1 and has length 3, so str[1,3] returns 'ell'.
Final Answer:
str[1,3] -> Option A
Quick Check:
Substring from index 1, length 3 = 'ell' [OK]
Hint: Use [start, length] to slice substrings easily [OK]
Common Mistakes:
Using range with wrong end index
Confusing start and length parameters
Using negative indices incorrectly
3. What is the output of this Ruby code?
str = "programming"
puts str[-4, 3]
medium
A. ing
B. ram
C. amm
D. min
Solution
Step 1: Understand negative indexing and slicing
Negative index -4 means counting from the end: 'g'( -1), 'n'( -2), 'i'( -3), 'm'( -4). So index -4 points to 'm'.
Step 2: Extract substring starting at 'm' with length 3
From 'm' take 3 characters: 'm', 'i', 'n' forming 'min'.
Final Answer:
min -> Option D
Quick Check:
str[-4,3] = 'min' [OK]
Hint: Negative index counts from end; length slices forward [OK]
Common Mistakes:
Confusing negative index position
Using range instead of start,length
Off-by-one errors in slicing length
4. Identify the error in this Ruby code snippet:
str = "example"
puts str[2..5, 2]
medium
A. Returns nil because of invalid range
B. Returns 'am' as expected
C. SyntaxError due to wrong slicing syntax
D. Returns 'amp' substring
Solution
Step 1: Analyze slicing syntax used
The code uses str[2..5, 2] which mixes range and length parameters incorrectly. Ruby does not support this syntax.
Step 2: Understand correct slicing methods
Use either str[2..5] for range or str[2, 2] for start and length. Mixing both causes a syntax error.
Final Answer:
SyntaxError due to wrong slicing syntax -> Option C
Quick Check:
Invalid slice syntax = SyntaxError [OK]
Hint: Use either range or start,length, not both together [OK]
Common Mistakes:
Mixing range and length in one slice
Expecting multiple parameters in range slice
Ignoring Ruby's slice method rules
5. Given str = "abracadabra", which code extracts every second character starting from index 0 to index 8 (inclusive)?
hard
A. str[0..8][::2]
B. str[0..8].chars.select.with_index { |_, i| i.even? }.join
C. str[0, 8, 2]
D. str[0..8].chars.each_slice(2).map(&:first).join
Solution
Step 1: Understand Ruby slicing limitations
Ruby's slice method does not support step values like Python. So str[0, 8, 2] or str[0..8][::2] are invalid.
Step 2: Use chars with index filtering to pick every second character
str[0..8] gets substring 'abracadab'. Then chars.select.with_index { |_, i| i.even? } picks characters at even indices: a (0), r (2), c (4), d (6), b (8). Joining gives 'ar cdb' without spaces: 'arcdb'.
Final Answer:
str[0..8].chars.select.with_index { |_, i| i.even? }.join -> Option B
Quick Check:
Use chars and select.with_index for stepping [OK]
Hint: Ruby slice has no step; use chars with index filtering [OK]
Common Mistakes:
Trying Python-style slicing with step
Using invalid slice parameters
Not converting string to chars before filtering
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.