2 flat logo on transparent 256
2018-05-29

Rubyの練習問題:文字列編|初心者・独学者向け入門コンテンツ

Note231321

初心者・独学者向けの入門コンテンツとしてRubyで文字列を編集する際の練習問題を作成しました。

各問題の回答は内部リンクに設定しています。

Rubyの文字列の編集については下記を御覧ください

初心者・独学者向け|RubyのStringクラスとよく使うメソッド

Rubyで文字列を編集する際の練習問題

1:rubyで文字列を出力する

"こんにちは" と出力してください

1-1:rubyで文字列を出力するの回答

2:rubyで英語の文字列を大文字にする

"hello"を"HELLO"と変換し出力してください

1-2:rubyで英語の文字列を大文字にするの回答

3:rubyで英語の文字列を子文字にする

"HELLO"を"hello"と変換し出力してください

1-3"HELLO"を"hello"と変換し出力してくださいの回答

4:rubyで文字列を配列にする

"こんにちは,おはよう,ruby"を["こんにちは", "おはよう", "ruby"]と変換し出力してください

1-4rubyで文字列を配列にするの回答

5:rubyで"こおんはによちうわ"を"おはよう"と出力する

"こおんはによちうわ"を"おはよう"と出力してください。

なお出力には繰り返し処理を利用してください。

1-5rubyで"こおんはによちうわ"を"おはよう"と出力するの回答

6:rubyで以下を出力した場合は、選択肢1と2どちらで表示されるか?

str = "こんにちは, こんばんわ"
  str.delete!("")
p str

選択肢

1:"こんにちは, こんばんわ"と出力される

2:"んにちは, んばんわ"と出力される

1-6rubyの回答

7:rubyで文字列を挿入する

"Ruby,Python,PHP"を"Ruby,Java,Python,PHP"に変更してください

1-7rubyで文字列を挿入する

8:rubyで文字列を挿入する:応用編

以下を実行した場合は、選択肢1〜3のどれになるか

str = "ありがとう,ごめんなさい,すいません"
str.insert(5, ",おはよう")
str.insert(-1, ",こんばんは")
puts str

選択肢

1:実行エラー

2:"ありがとう,おはよう,ごめんなさい,すいません,こんばんは" と出力される

3:"ありがとう,ごめんなさい,すいません,こんばんは"と出力される

1-8rubyで文字列を挿入する:応用編の回答

9:rubyで文字列反転させる

"プログラミング言語:ruby"を"ybur:語言グンミラグロプ"と出力してください。

1-9rubyで文字列反転させるの回答

10:rubyの変数について

以下を実行した場合に実行結果はどのようになるか

case = "ruby,python,php,java"
p case

選択肢

1:"ruby,python,php,java"と出力される

2:文法エラーとなる

3:case文として認識される

1-10:rubyの変数についての回答

11:rubyのsliceメソッドについて

以下メソッドの実行結果を選択肢から1つ選んで下さい

string = "プログラミング ruby"
string.slice(0,8)
p string

選択肢

1:"ruby"と出力される

2:実行エラーとなる

3:"プログラミング "と出力される

4:"プログラミング ruby"と出力される

1-11:rubyのsliceメソッドについての回答

12:rubyのgsubメソッド

以下メソッドの実行結果を選択肢から1つ選んで下さい

string = "東京 大阪 名古屋"

p string.gsub(/( | )+/, ",")

選択肢

1: "東京 大阪 名古屋"

2: "東京 大阪 名古屋"

3:実行エラーになる

4:"東京,大阪,名古屋"

1-12:rubyのgsubメソッドについての回答

1-1:rubyで文字列を出力の回答

設問:"こんにちは" と出力してください

回答:下記どれか1つの処理で可能

p "こんにちは"
print "こんにちは"
puts "こんにちは"

printメソッドは引数に指定した値を出力し、末尾に改行は入りません。

1-2:rubyで英語の文字列を大文字にするの回答

設問:"hello"を"HELLO"と変換し出力してください

回答:stringクラスの.upcaseメソッドを利用します。

p "hello".upcase

1-3:rubyで英語の文字列を子文字にするの回答

設問:"HELLO"を"hello"と変換し出力してください

回答:stringクラスの. downcaseメソッドを利用します。

p "HELLO". downcase

1-4:rubyで文字列を配列にするの回答

設問:"こんにちは,おはよう,ruby"を["こんにちは", "おはよう", "ruby"]と変換し出力してください

回答:stringクラスのsplitメソッドを利用します。

str = "こんにちは,おはよう,ruby"
p str.split(",")

1-5:rubyで"こおんはによちうわ"を"おはよう"と出力する

設定方法はいろいろありますが、"こおんはによちうわ"のおはようは奇数に設定しているので、奇数の場合に出力するようにします。.odd?はRubyの数字クラスで奇数の場合trueを返す処理になります。

また、with_indexで繰り返し処理を行った場合はカウントが0から開始されます

繰り返しとodd?の設定については以下をご覧ください

Rubyの繰り返し処理の解説|初心者・独学者向け

str = "こおんはによちうわ"

str.each_char.with_index{|c, index|
  if index.odd?
    print c
  end
}

print "\n"

1-6:rubyで以下を出力した場合は、選択肢1と2どちらで表示されるか?

回答:2:"んにちは, んばんわ"と出力されます。

str = "こんにちは, こんばんわ"
  str.delete!("")
p str

delete!で破壊的メソッド化しているので、"んにちは, んばんわ"と出力されます。

破壊的メソッドの詳細は以下を御覧ください

Ruby技術者認定試験 (Silver version 2.1)対策 | !が付かない破壊的メソッド

1-7:rubyで文字列を挿入するの回答

設問:"Ruby,Python,PHP"を"Ruby,Java,Python,PHP"に変更してください

回答:insertメソッドを利用します。なお挿入位置は0からカウントします。

str = "Ruby,Python,PHP"
str.insert(4, ",Java")
puts str

1-8:rubyで文字列を挿入する:応用編の回答

設問

以下を実行した場合は、選択肢1〜3のどれになるか

1:実行エラー

2:"ありがとう,おはよう,ごめんなさい,すいません,こんばんは" と出力される

3:"ありがとう,ごめんなさい,すいません,こんばんは"と出力される

回答:2

insertメソッドは!が付かない破壊的メソッドの為、 str.insert(5, ",おはよう")が反映された状態で、str.insert(-1, ",こんばんは")の処理が実行されます。

また、insertメソッドは文末への処理として、マイナスの値も付与できます。-1が文末で-2からが文頭から2番目といった指定となります。

str = "ありがとう,ごめんなさい,すいません"
str.insert(5, ",おはよう")
str.insert(-1, ",こんばんは")
puts str

#実行結果
#ありがとう,おはよう,ごめんなさい,すいません,こんばんは

1-9:rubyで文字列反転させる

設問 "プログラミング言語:ruby"を"ybur:語言グンミラグロプ"と出力してください。

回答:reverseメソッドを利用します。

str = "プログラミング言語:ruby"
p str.reverse

1-10:rubyの変数についての回答

設問 以下を実行した場合に実行結果はどのようになるか

選択肢

1:"ruby,python,php,java"と出力される

2:文法エラーとなる

3:case文として認識される

case = "ruby,python,php,java"
p case

回答:2

caseはRubyの予約語の為、変数として設定できません。 その為文法エラーとなります。

予約語とは予め決まったスペルで機能定義されている文字の事を指します。 endやif文なども変数として設定できません。

予約語はプログラミング言語に関わらず存在します。 詳細は以下を御覧ください。

Ruby、PHP、Python、Javaの予約語の一覧|そもそも予約語って何?

1-11:rubyのsliceメソッドについての回答

設問

以下メソッドの実行結果を選択肢から1つ選んで下さい

string = "プログラミング ruby"
string.slice(0,8)
p string

選択肢

1:"ruby"と出力される

2:実行エラーとなる

3:"プログラミング "と出力される

4:"プログラミング ruby"と出力される

回答

4:"プログラミング ruby"と出力される

sliceメソッドは非破壊的メソッドなので、sliceの処理をしても 変数に設定している"プログラミング ruby"に影響はありません。

1-12:rubyのgsubメソッドについての回答

設問

以下メソッドの実行結果を選択肢から1つ選んで下さい

string = "東京 大阪 名古屋"

p string.gsub(/( | )+/, ",")

選択肢

1: "東京 大阪 名古屋"

2: "東京 大阪 名古屋"

3:実行エラーになる

4:"東京,大阪,名古屋"

回答 4

出力結果は"東京,大阪,名古屋"となります。 gsubは正規表現のパターンにマッチした文字を全て置換します。

第一引数は正規表現の検索パターンで、第二引数は置換する文字列となります。

今回の問題では、半角もしくは全角スペースをカンマに置換する コードとなります。

そのため第一引数で、半角か全角スペースを指定し、 第二引数では, カンマを指定しています。

その他関連記事

Rubyの練習問題:ハッシュ編|初心者・独学者向け入門コンテンツ

Rubyの練習問題:配列編|初心者・独学者向け入門コンテンツ

初心者・独学者向け|Rubyの配列処理の入門とよく使うメソッド

初心者・独学者向け|Rubyのハッシュ入門とよく使うメソッド

初心者・独学者向け|Rubyのinitializeメソッドとは

前の記事
次の記事