Итерация по строкам
Часть раздела Основы путешествия по 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Эти методы полезны, когда вам нужно проанализировать текст, подсчитать определенные символы или преобразовать строки посимвольно.
Задание
ЛегкоПрочитайте одну строку ввода, содержащую строку (например, 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В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 3Логические операторы. Часть 47Калькулятор разделения счета
Приветственное сообщениеПолучение пользовательского ввода13Продвинутая работа с массивами
Срезы массивов через диапазоныСрезы массивов через индексыОператоры массивовМетод include?2Переменные и типы данных
Числа и переменныеСтроковый тип данныхЛогический тип данныхТип данных SymbolПроверка типов данныхПравила именованияПовторение: создание переменных5Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторВложенные конструкции If - ElseОператор Unless8Циклы
Цикл For с диапазонамиЦикл WhileОператор BreakОператор NextПовторение: ФакториалЦикл TimesЦикл UntilВложенные циклыПовторение: Динамический ввод3Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСокращенная арифметикаИтоги: простая математикаОператоры сравнения6Основы ввода-вывода
Вывод с помощью putsВывод с помощью print и pВывод с переменнымиВвод с помощью getsМетод chompПреобразование типовИтоги — Калькулятор возрастаИтоги — Истина или ложь