Bird
Raised Fist0
Rubyprogramming~10 mins

String slicing and indexing in Ruby - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to get the first character of the string.

Ruby
word = "hello"
first_char = word[[1]]
puts first_char
Drag options to blanks, or click blank then click option'
A0
B1
C-1
D5
Attempts:
3 left
💡 Hint
Common Mistakes
Using 1 instead of 0 for the first character index.
Using -1 which gives the last character.
2fill in blank
medium

Complete the code to get the substring "ell" from the string.

Ruby
word = "hello"
substring = word[[1]]
puts substring
Drag options to blanks, or click blank then click option'
A1..3
B2..4
C0..2
D3..5
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong range that misses or adds extra characters.
Using exclusive ranges instead of inclusive.
3fill in blank
hard

Fix the error in the code to get the last two characters of the string.

Ruby
word = "world"
last_two = word[[1]]
puts last_two
Drag options to blanks, or click blank then click option'
A4..5
B3..4
C-1, 2
D-2, 2
Attempts:
3 left
💡 Hint
Common Mistakes
Using a range that goes out of bounds.
Using -1 as start index with length 2 which is invalid.
4fill in blank
hard

Fill both blanks to get the substring "cat" from the string.

Ruby
word = "concatenate"
substring = word[[1], [2]]
puts substring
Drag options to blanks, or click blank then click option'
A3
B4
D5
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong start index.
Using wrong length that cuts substring incorrectly.
5fill in blank
hard

Fill all three blanks to create a hash with word lengths for words longer than 3 characters.

Ruby
words = ["dog", "elephant", "cat", "bird"]
lengths = words.each_with_object({}) { |[3], hash| hash[[1]] = [3].[2] if [3].[2] > 3 }
puts lengths
Drag options to blanks, or click blank then click option'
Aword
Blength
Dw
Attempts:
3 left
💡 Hint
Common Mistakes
Using different variable names inconsistently.
Using wrong property to get length.

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

  1. Step 1: Understand Ruby string indexing

    Ruby strings are indexed starting at 0, so the first character is at index 0.
  2. Step 2: Apply indexing to the string 'hello'

    Accessing str[0] returns the first character 'h'.
  3. Final Answer:

    The first character of the string, 'h' -> Option A
  4. 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

  1. Step 1: Understand slicing syntax

    In Ruby, str[start, length] extracts a substring starting at start with length characters.
  2. Step 2: Extract 'ell' from 'hello'

    'ell' starts at index 1 and has length 3, so str[1,3] returns 'ell'.
  3. Final Answer:

    str[1,3] -> Option A
  4. 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

  1. 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'.
  2. Step 2: Extract substring starting at 'm' with length 3

    From 'm' take 3 characters: 'm', 'i', 'n' forming 'min'.
  3. Final Answer:

    min -> Option D
  4. 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

  1. 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.
  2. 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.
  3. Final Answer:

    SyntaxError due to wrong slicing syntax -> Option C
  4. 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

  1. 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.
  2. 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'.
  3. Final Answer:

    str[0..8].chars.select.with_index { |_, i| i.even? }.join -> Option B
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard