###奇数・偶数かを判定
n = 2
if n.zero?
puts '0でした'
elsif n.even?
puts '偶数'
elsif n.odd?
puts '奇数'
else
puts 'わかりません'
end
###文字列を空白で分ける
str = "samurai engineer blog"
array = str.split
p array
=>["samurai", "engineer", "blog"]
###1~nまでの和
input_line = gets
n = 1
s = 0
while n <= input_line.to_i
s += n
n += 1
end
puts s
###空白をスラッシュに置き換える
input_line = gets
input_line.gsub!(/ /, '/')
puts input_line
string = "ruby ruby ruby"
string.gsub!(/ruby/, 'python')
puts string
=>python python python
###改行を取り除く
input_line = gets
a = input_line.chomp!
input_line2 = gets
b = input_line2.chomp!
puts "#{b}#{a}#{b}"
chomp!メソッドは呼び出し元の文字を変えてしまう。
変えたくなければchompメソッドを使う。
###階乗
#2の3乗の場合
2 ** 3
###大文字と小文字の変換
p "hello world".upcase
=> HELLO WORLD
p "WHAT IS THIS".downcase
=>what is this
###文字をn回繰り返し表示
src = "Good!"
str = src * 10
puts str
###文字列の一部を表示
input_line = gets
newStr = input_line[0..2]
puts newStr
str = "Hello"
newStr = str[1, 2]
=> el
###文字を逆順で出力する
p "foobar".reverse # => "raboof"
###文字列を1文字ずつに分割する
p "hello".chars
=> ["h", "e", "l", "l", "o"]
###指定の文字列が含まれているか確認する
str = "123abc"
str.include?("123")
=> true
###特定の文字の出現回数を数える
p "foo bar buz".count('b') #=> 2
###複数の文字列を変換する
"hogeはrubyです".gsub(/hoge|ruby/, "hoge" => "私", "ruby" => "男")
=> "私は男です"
###最大値と最小値を求める
[5, 6, 2, 9, 8, 3].max
=> 9
[5, 6, 2, 9, 8, 3].max(3)
=> [9, 8, 6]
[5, 6, 2, 9, 8, 3].min
=> 2
###配列の各要素を変換
numbers = [1, 2, 3, 4, 5]
new_numbers = []
numbers.map { |n| new_numbers << n * 10 }
p new_numbers #=> [10, 20, 30, 40, 50]
###indexメソッド
配列のように1つ目は0となる。ここに注意。
s = "ROMACECARVSEMSEEXEGSE"
p s.index("CE")
=> 4
a = ["VSE", "MSE", "GSE", "EXE"]
p a.index("GSE")
=> 2
###文字列から数値だけを抽出
num = "abc12345def67890".gsub(/[^\d]/, "").to_i # num => 1234567890
###配列の要素を連結して文字列化する
p ['foo', 'bar', 'buz'].join #=> "foobarbuz"
###2進数から10進数に変換する
p "11111111".to_i(2) #=> 255
###改行
OSがmacの場合
puts "SAMPLE1\rSAMPLE2"
###小数点n桁で四捨五入
100.3333.round
# 出力結果 ==> 100
100.3333.round(1)
# 出力結果 ==> 100.3
100.3383.round(2)
# 出力結果 ==> 100.34
###小数点切りすて
1.4.floor # 1
###下一桁を出力
puts n.to_s[-1]
###特定の文字が含まれるかどうか(複数)
anyメソッドはどれか1つでも条件を満たせばtrueを返す。
input_line = gets
text = ["I", "l", "i"]
if text.any? { |t| input_line.include?(t) }
puts 'caution'
else
puts input_line
end
###数字を小さい順に並べ替える
ary = [4, 2, 5, 1, 3]
newary = ary.sort
=> [1,2,3,4,5]
###繰り返し処理を簡単に書く
i = 1
while i <= num do
# 云々
i += 1
end
上記のようなコードはもっと簡単に書き換えることができる
(1..num).each do |i|
# 云々
end
1.upto(num) do |i|
# 云々
end
こんな感じに書き換えることができるので覚えておこう。
###配列が空かどうか
p [].empty? #=> true
p [1, 2, 3].empty? #=> false
###文字列を1文字ずつ分割する
s = "1234567890"
s.split(//)
=> ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
###文字列をn文字ずつ分割する
s = "1234567890"
n = 3
s.scan(/.{1,#{n}}/)
=> ["123", "456", "789", "0"]
###絶対値を求める
(2 - 5).abs #=> 3