Encoding
# coding: utf-8
正規表現
# 抽出
"Hello, World".slice /W.+$/ #=> "World"
"Hello, World".slice /w.+$/i #=> "World"
# マッチ&抽出
"Hello, World. Hey, John.".match(%r{Hey, (.*).})[1] #=> "John"
"/path/to/article?q=hello".match(%r{.*/article\?q=(.*)})[1] #=> "hello"
# 含む
"Hello, World" =~ /Hello/ #=> 0
"Hello, World" =~ /hello/ #=> nil
"Hello, World" =~ /hello/i #=> 0
"Hello, World".include? "Hello" #=> true
["dog", "cat", "mouse"].include? "cat" #=> true
# 完全一致
"Hello, World" =~ /^Hello$/ #=> nil
"Hello, World" =~ /^Hello, World$/ #=> 0
String
str = %(Programming language "Ruby")
puts str
# => Programming language "Ruby"
ruby = "Ruby"
str2 = %(Programming language "#{ruby}")
puts str2
# => Programming language "Ruby"
% | desc |
---|---|
% | ダブルクオートで囲う場合と同等。式展開される。 |
%q | シングルクオートで囲う場合と同等。式展開されない。 |
%W | スペース区切りで配列定義。式展開される。 |
%w | スペース区切りで配列定義。式展開されない。 |
%I | 要素がシンボルの配列を作る。式展開される。 |
%i | 要素がシンボルの配列を作る。式展開されない。 |
%x | コマンド出力を行う。バッククオートで囲った場合と同等。 |
%s | シンボル。式展開されない。 |
true / false
!!(1) #=> true
!!(0) #=> true
!!(-1) #=> true
!!(nil) #=> false
!!([]) #=> true
!!({}) #=> true
オブジェクトを JSON に変換
JSON.generate(obj)
JSON.pretty_generate(obj) # 整形
日付・時刻の計算
require 'active_support/time'
Time.now #=> 2014-10-24 20:50:15 +0900
Time.now + 3.hours #=> 2014-10-24 23:50:15 +0900
via - Rubyで日付の計算するならactive_support使っとけって世間で言われてるけどマジだわ - yachibit.log
コマンドライン引数
puts ARGV[0]
例外
Debug
メソッド一覧
require 'pp'
pp [].methods.sort
pry
ブロックコメント
=begin
:
:
=end
File
出力
# r:読込 w:上書 a:追記
open("log.txt", "a"){|f| f.write("文字列")}
Path
File.basename("/home/gumby/work/ruby.rb") #=> "ruby.rb"
File.basename("/home/gumby/work/ruby.rb", ".rb") #=> "ruby"
CSV
CSV.table("data.tsv", { :col_sep => "\t", :quote_char => "\"" }) # needs header row
Array
要素数を指定して取得
[1,2,3,4,5].take(3) #=> [1, 2, 3]
[1,2,3,4,5].first(3) #=> [1, 2, 3]
ActiveSupport
ActiveSupport による日時演算
gem 'activesupport'
require 'active_support/all'
Time.now #=> 2014-10-06 21:39:10 +0900
Time.now.since(3.hours) #=> 2014-10-07 00:39:10 +0900
ActiveSupport による UTC(String) → JST(String) 変換
9時間進めて JST 表記にする
gem 'activesupport'
require 'active_support/all'
Time.strptime("2014-10-06 12:39:10 UTC", "%F %T UTC").since(9.hours).strftime("%F %T JST")
#=> "2014-10-06 21:39:10 JST"
blank?
require 'active_support/core_ext/object/blank'
- rails/blank.rb at master · rails/rails
- Active Support コア拡張機能 | Rails ガイド
- Rails以外の環境でblank?メソッドを使うときの注意 - (゚∀゚)o彡 sasata299’s blog
Rubyワンライナー
ワンライナー基礎
-e
- 一番基本的なオプション。スクリプトを実行する。(他のオプションと組み合わせる時は必ず最後に記載する)
$ ruby -e 'puts "hoge"'
Windowsの環境変数Pathを改行して表示
echo %path% | ruby -F; -ane 'puts $F'
echo %path%
で出力される内容を、rubyコマンドの引数として渡し、-n
オプションによって行ごとに処理をループする。ループは Kernel.#gets により組込変数$_
に格納される。echo %path%
の場合は;
区切りの1行文字列のため、ループは1回となる。次に、-a
オプションによってループの先頭で自動的に $F = $_.split が実行され、結果の格納された$F
を puts で出力している。splitの区切り文字はデフォルトで半角スペースのようだが、オプション-F;
で;
を区切り文字に指定している。