Ruby Tips

Ruby Tips

Rubyを1から学習する中で覚えていった事・使った事をメモしていきます。

随時追加記事

コメント

1行コメント

# 1行コメントはシャープ

複数行コメント

=begin
複数行コメントは
ビギンとエンドで囲む
=end

配列

Array#zip

arrayA = [1,2,3]
arrayB = ["a","b","c"]
arrayA[0,2].zip(arrayB[0,2])

配列に要素を追加する

arrayA = [1,2,3]
arrayA.push(4)
arrayA << 5
#=> [1,2,3,4,5]

each

配列ループ

array = [1, 2, 3]
array.each{|i|
 p i
}
# => 1
# => 2
# => 3

連想配列(ハッシュ)ループ

array = {'windows' => 1, 'mac' => 2, 'linux' => 3}
array.each{|key, value|
 p key
 p value
}
# => "windows"
# => 1
# => "mac"
# => 2
# => "linux"
# => 3

飛ばす(PHPで言うcontinue)

next

arrayA.each do |a|
 if a == "hoge"
  next
 end
end

map

インデックスループ

(0...dates.length).map{|i} dates[i]}
# => [["1993", "2", "24"], ["2014", "1", "1"]]

文字列操作

結合

r = "test"
p r + "-ok" # => "test-ok"
p r # => "test"

破壊的結合

r = "test"
p r << "-ok" # => "test-ok"
p r # => "test-ok"

部分文字列

r = "test"
p r[1] # => "e"
p r[0,2] # => "te"
p r[1..2] # => "es"

文字列長

r = "test"
p r.length # => 4

フォーマット

format("文字は %s 数字は %d", "abc", 123)
# => "文字は abc 数字は 123"

format("%05d", 3) 
# => 00003

文字列カウント

"test".count("t")
# => 1

先頭・末尾の空白除去

s = " test "
s.strip
# => "test"

部分文字列 n文字目からm文字抽出したい

hoge_txt[3, 5]  # 3文字目から5文字抽出

行分割

s = "te\nst"

s.lines.to_a         # to_array
# => ["te\n", "st"]

s.lines.map(&:chomp)
# => ["te", "st"]

s.split("\n")
# => ["te", "st"]

a = []; s.each_line{|l| a << l}; a
# => ["te\n", "st"]

文字分割(スペース区切り)

s = " t e s t "
s.split
# => ["t", "e", "s", "t"]

文字分割(指定文字 ex.カンマ区切り)

s = " t,e,s,t "
s.split(',')
# => ["t", "e", "s", "t"]

文字分割(1文字ずつ)

"test".chars.to_a
# => ["t", "e", "s", "t"]

配列をカンマ区切りで文字結合

arrayA = ['a', 'b', 'c']
p arrayA.join(',') $ => 'a, b, c'

HTMLエスケープ

require 'cgi'
CGI.unescapeHTML "&lt;br&gt;"
# => "<br>"

windowsでpした時の文字化け

p あああ #=> "\u3042\u3042\u3042"

となってしまうので

puts "あああ".encode(Encoding::Windows_31J) #=> あああ

とする

指定文字列を削除

s = "あいうえお"
s.delete("う") #=> あいえお

指定文字を含む

s = "abc"
s.include?("b") #=> true

改行操作

改行削除

"test\n".chomp
# => "test

ファイル

開く

html = open("test.html", &:read)

日時

Time.local(2016)
# => 2016-01-01 00:00:00 +0000
Time.local "2016"
# => 2016-01-01 00:00:00 +0000
Time.local 2016
# => 2016-01-01 00:00:00 +0000
Time.local 2016, 11, 27
# => 2016-11-27 00:00:00 +0000

実行

$ ruby test.rb

irb(Interactive Ruby)

rubyの実行も出来る

$ irb test.rb

対話形式でも出来る

$ irb
irb(main):001:0> 1+2
=> 3

クラス

class Test
  def test_method
    puts "test"
  end
end

ruby参考プログラムなどで出て来るklassについて

classが予約語だから

http://shirusu-ni-tarazu.hatenablog.jp/entry/2014/05/08/001504

オブジェクト

オブジェクトから文字列に変換する

test_str = test_obj.to_s

オブジェクトをひたすら正規表現でどうにかしようとしていました。これをやって文字列にしないと正規表現でマッチ(str型のmatchメソッド)させたり出来なかった。

メソッド

initialize

クラスをnewした時に実行される。コンストラクタと同じような感じ。

型変換

数値にする

hoge_txt.to_i

文字列にする

hoge_txt.to_s

Comments

No comments yet. Why don’t you start the discussion?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です