Iterowanie po ciągach znaków
Część sekcji Podstawy ścieżki Ruby w Coddy. Lekcja 67 z 88.
Podobnie jak tablice, ciągi znaków w Ruby można iterować znak po znaku. Metoda each_char pozwala przetwarzać każdy znak w ciągu znaków osobno.
Oto jak to działa:
word = "Ruby"
word.each_char do |char|
puts char
endTo wypisuje każdy znak w osobnym wierszu: R, u, b, y. Zmienna bloku char przechowuje po jednym znaku, gdy iterator przechodzi przez ciąg znaków.
Jeśli potrzebujesz zarówno znaku, jak i jego pozycji, użyj each_char.with_index:
word = "Hi"
word.each_char.with_index do |char, index|
puts "#{index}: #{char}"
endTo daje wynik:
0: H
1: iInną przydatną metodą jest chars, która przekształca ciąg znaków w tablicę jego znaków. Dzięki temu możesz używać wszystkich metod tablic, których już się nauczyłeś:
letters = "abc".chars
puts letters # Wyświetla: a, b, cTe metody są przydatne, gdy chcesz analizować tekst, liczyć konkretne znaki lub przekształcać ciągi znaków znak po znaku.
Wyzwanie
ŁatwyWczytaj jeden wiersz danych wejściowych zawierający ciąg znaków (np. hello).
Użyj each_char.with_index, aby iterować po ciągu znaków i wypisać każdy znak wraz z jego pozycją. Każdy wiersz powinien mieć następujący format: Position 0: h
Po wypisaniu wszystkich znaków wraz z ich pozycjami wypisz w nowym wierszu całkowitą liczbę znaków w ciągu znaków w następującym formacie: Total characters: 5
Na przykład, jeśli dane wejściowe to hello, dane wyjściowe powinny wyglądać tak:
Position 0: h
Position 1: e
Position 2: l
Position 3: l
Position 4: o
Total characters: 5Jeśli dane wejściowe to Ruby, dane wyjściowe powinny wyglądać tak:
Position 0: R
Position 1: u
Position 2: b
Position 3: y
Total characters: 4Jeśli dane wejściowe to code, dane wyjściowe powinny wyglądać tak:
Position 0: c
Position 1: o
Position 2: d
Position 3: e
Total characters: 4Jeśli dane wejściowe to A, dane wyjściowe powinny wyglądać tak:
Position 0: A
Total characters: 1Spróbuj swoich sił
# Wczytaj dane wejściowe
str = gets.chomp
# TODO: Napisz swój kod poniżej
# Użyj each_char.with_index, aby przejść przez łańcuch znaków
# Wypisz każdy znak wraz z jego pozycją w formacie: Position X: char
# Wypisz łączną liczbę znaków w formacie: Total characters: XTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory — część 2
Operatory logiczne — część 1Operatory logiczne — część 2Powtórka — podstawy logikiOperatory logiczne — część 3Operatory logiczne — część 47Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych od użytkownika2Zmienne i typy danych
Liczby i zmienneTyp danych StringTyp danych BooleanTyp danych SymbolSprawdzanie typów danychKonwencje nazewnictwaPodsumowanie — tworzenie zmiennych5Podejmowanie decyzji
Instrukcja ifIf - elsePowtórka — prosty kalkulatorZagnieżdżone if - elseInstrukcja unless8Pętle
Pętla for z zakresamiPętla whilebreaknextPowtórka – silniaPętla timesPętla untilPętle zagnieżdżonePowtórka – dynamiczne wejście3Operatory — część 1
Operatory arytmetyczneOperator moduloSkrócone operatory arytmetycznePodsumowanie — prosta matematykaOperatory porównania6Podstawowe wejście i wyjście
Wyświetlanie za pomocą putsWyświetlanie za pomocą print i pWyświetlanie zmiennychWczytywanie za pomocą getsMetoda chompKonwersja typówPodsumowanie – kalkulator wiekuPodsumowanie – prawda czy fałszPoćwicz samodzielnie: Kompilator Ruby online