Menu
Coddy logo textTech

Итерация по строкам

Часть раздела Основы путешествия по Ruby на Coddy — урок 67 из 88.

Как и массивы, строки в Ruby можно перебирать посимвольно. Метод each_char позволяет обрабатывать каждый символ в строке по отдельности.

Вот как это работает:

word = "Ruby"

word.each_char do |char|
  puts char
end

Это выводит каждый символ на отдельной строке: R, u, b, y. Блочная переменная char содержит по одному символу за раз, пока итератор проходит по строке.

Если вам нужны и символ, и его позиция, используйте each_char.with_index:

word = "Hi"

word.each_char.with_index do |char, index|
  puts "#{index}: #{char}"
end

Это выводит:

0: H
1: i

Еще один полезный метод — chars, который преобразует строку в массив ее символов. Это позволяет использовать все методы массивов, которые вы уже изучили:

letters = "abc".chars
puts letters  # Выводит: a, b, c

Эти методы полезны, когда вам нужно проанализировать текст, подсчитать определенные символы или преобразовать строки посимвольно.

challenge icon

Задание

Легко

Прочитайте одну строку ввода, содержащую строку (например, hello).

Используйте each_char.with_index для итерации по строке и вывода каждого символа вместе с его позицией. Каждая строка должна соответствовать следующему формату: Position 0: h

После вывода всех символов с их позициями, выведите общее количество символов в строке на новой строке в следующем формате: Total characters: 5

Например, если на вход подается hello, вывод должен быть следующим:

Position 0: h
Position 1: e
Position 2: l
Position 3: l
Position 4: o
Total characters: 5

Если на вход подается Ruby, вывод должен быть следующим:

Position 0: R
Position 1: u
Position 2: b
Position 3: y
Total characters: 4

Если на вход подается code, вывод должен быть следующим:

Position 0: c
Position 1: o
Position 2: d
Position 3: e
Total characters: 4

Если на вход подается A, вывод должен быть следующим:

Position 0: A
Total characters: 1

Шпаргалка

Используйте each_char для итерации по каждому символу в строке:

word = "Ruby"

word.each_char do |char|
  puts char
end

Используйте each_char.with_index для доступа как к символу, так и к его позиции:

word = "Hi"

word.each_char.with_index do |char, index|
  puts "#{index}: #{char}"
end

Используйте chars для преобразования строки в массив символов:

letters = "abc".chars
puts letters  # Выводит: a, b, c

Попробуйте сами

# Чтение входных данных
str = gets.chomp

# TODO: Напишите ваш код ниже
# Используйте each_char.with_index для итерации по строке
# Выведите каждый символ с его позицией в формате: Position X: char


# Выведите общее количество символов в формате: Total characters: X
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы