【備忘録】Ruby 基本事項一覧

#プロローグ
Rubyで色々な問題を解いていて、配列や繰り返し処理の使い方、メソッドなどなどを１度整理したいと思い、投稿いたします。
誤っている部分がございましたら、ご教授頂けますと幸いです🙇‍♂️

プロを目指す人のためのRuby入門を中心に、様々な記事を参考にして自分なりに書いていきます。
最後に参考記事を載せておきます。

自分が学習したものを随時載せておくので、順番がおかしいかもしれませんが、ご了承頂けますと幸いです。

#配列や繰り返し処理
- for文



##for文

：for文の中で作成された変数は、for文の外でも参照できる

```ruby:Qiita.rb

for 変数　in 配列など (do) #doは省略可能
 繰り返し処理
end

```

例１

```ruby:Qiita.rb

numbers = [1,2,3] #決まった配列
sum = 0　#初期値
for n　in numbers #numbersの値を１つずつnにいれる
 sum += n #0+1=1, 1+2=3, 3+3=6 と代入し計算
end

sum #合計値6を出力

```

例２

```ruby:Qiita.rb

n = gets.to_i #好きな数字を入力させる

for i in 1..3 do 
    puts i 
end

# 結果
#1
#2
#3

#（補足）1..nを範囲オブジェクトという。ちなみに、1...nの場合、1から(n-1)まで出る（例：1...5:1~4)

```


#メソッド
- readlineメソッド
- mapメソッド
- to_iメソッド
- printメソッド
- putsメソッド
- getsメソッド
- upcaseメソッド
- downcaseメソッド
- splitメソッド
- chompメソッド
- include?メソッド


##readlineメソッド
：複数行を読み込み配列に格納する。

例

```ruby:Qiita.rb

入力される値：
3
1
4

readlineメソッドを使用することで、[3,1,4]となる。

```

##mapメソッド
：配列の要素の数だけ処理を繰り返す。

```ruby:Qiita.rb

配列のある変数.map { |変数| 実行したい処理}

```


：各要素にメソッドを適用するときは、下記のようにすることで、それぞれの要素に対してメソッドが繰り返し実行されて結果が配列として出力される。

```ruby:Qiita.rb
配列のある変数.map(&:メソッド名)

```


例

```ruby:Qiita.rb

入力される値：
"3"
"1"
"4"

array = readlines.map(&:to_i) 
puts array

# 結果　[3,1,4]

```


##to_iメソッド
：数字の文字列を数値オブジェクトに変換する。

```ruby:Qiita.rb

入力される値：
"3"

to_iメソッドを使用することで"3"とではなく、数字としての3が出力される

```

## printメソッド
：改行を入れずに値を出力する。

例

```ruby:Qiita.rb

array = [1,2,3]
print array
# 結果　[1,2,3]

```

## putsメソッド
：改行を入れて値を出力する。

例


```ruby:Qiita.rb

array = [1,2,3]
puts array
# 結果
# 1
# 2
# 3

```

## getsメソッド
：ユーザーに値を入力させて、文字列として取得する。

例


```ruby:Qiita.rb

N = gets
=> こんにちは
puts N
# 結果　”こんにちは”
```
数字として返したい場合は、to_iメソッドを使う。

```ruby:Qiita.rb
N = gets.to_i
=> 1
puts N
# 結果　1

```

## upcaseメソッド
：小文字を大文字に変換する。

例

```ruby:Qiita.rb

N = gets
=> hello
puts N.upcase
# 結果　HELLO
```

## downcaseメソッド
：大文字を小文字に変換する。

例

```ruby:Qiita.rb

N = gets
=> HELLO
puts N.downcase
# 結果　hello
```

## splitメソッド
：指定した区切り文字で分割し、配列で返す

```ruby:Qiita.rb

文字列.split(区切り文字, 分割数)

```

例

```ruby:Qiita.rb

"appleANDorangeANDstrawberryAND".split('AND')
# 結果
# [ "apple", "orange", "strawberry"]

#ANDで区切って、配列を返してくれる。
#分割数に数字を書くことで返される配列の数が変わる。
```


## chompメソッド
：文字列の改行コードを取り除く
「文字列の改行コードを取り除く」とは・・・❓

```ruby:Qiita.rb
apple
orange
```

と出力された場合、appleの後ろには改行コード（\n）が入ってしまっています。
そのため、つなげて出力したい場合（appleorange)は、改行コードを消す必要があります。

例

```ruby:Qiita.rb
=>apple
=>orange

word1 = gets.chomp
word2 = gets.chomp
puts word1 + word2
#=> applebanana

```

## include?メソッド
：文字列や配列の要素に含まれる文字列に対して、指定した文字列が存在するか確認する

```ruby:Qiita.rb
food = apple

if food.include?(p)
    puts "YES"
else
    puts "NO"
end

# 結果
# =>true
```

includeとinclude?は別物です。

>includeはモジュールに対して使う
>include?は文字列の検索

参考記事：[【Ruby入門】Rubyのincludeは機能が2つ！includeの2つの機能を解説](https://style.potepan.com/articles/16207.html)


#参考記事
順不同です。

- [Rubyによる標準入力と言語仕様深堀](https://chobimusic.com/ruby_standard_input/)
- [rubyで配列の要素の最大値と最小値を取得](https://simanman.hatenablog.com/entry/2013/03/17/165042)
- [【Ruby】to_iメソッドの使い方を理解しよう](https://pikawaka.com/ruby/to_i)
- [["1", "2", "3"].map(&:to_i) とは何か。
](https://qiita.com/snyt45/items/7beb719ab0c4a25aa585)
- [Rubyのmap, map!メソッドの使い方](https://uxmilk.jp/21695)
- [Ruby mapメソッドについて](https://qiita.com/ecoyamas/items/07c9174d307e1ea66361)
- [【Ruby入門】print puts p printf 出力メソッドを極める！](https://www.sejuku.net/blog/16119)
- [【Ruby】getsメソッドの使い方と特徴をマスターしよう！](https://pikawaka.com/ruby/gets)
- [rubyでgetsメソッドを使ってジャンル、タイトル、感想を入力できるようにする。](https://qiita.com/bomber0522/items/e8dc235a39b89c44181a)
- [はじめてのRuby！文字列を大文字⇔小文字に変換する方法まとめ](https://www.sejuku.net/blog/60402)
- [【Ruby】splitメソッドの使い方-基礎から応用を理解しよう](https://pikawaka.com/ruby/split)
- [【Ruby入門】splitで文字列を分割しよう！](https://www.sejuku.net/blog/41681)
- [【Ruby入門】chomp、chop、strip、gsubによる改行の削除徹底比較！](https://www.sejuku.net/blog/19466)
- [Rubyでpaizaのスキルチェック問題に挑戦【Dランク】](https://qiita.com/taruya/items/63b66eb50fc60e239141)
- [Rubyで末尾の改行文字を取り除く方法：chomp, chomp!](https://uxmilk.jp/22800)
- [Rubyのinclude?メソッドの使い方【初心者向け】](https://techacademy.jp/magazine/19475)
- [はじめてのRuby！include?で文字列を検索してみよう！](https://www.sejuku.net/blog/57039)