ホーム DoRuby Rails導入でRuby標準クラスへ追加される関数達(String編)

Rails導入でRuby標準クラスへ追加される関数達(String編)

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

 こんにちは。

 KBMJでRuby on Rails を使ったweb開発に携わっているyoppiといいます。

 Ruby on Railsでは、Webフレームワーク機能以外にも、Ruby標準のクラスなどに関数の追加なども行われます。これらの関数は便利な割にそんなに知られていない気がするので、紹介してみようかな~と思います。

at

at(位置:integer)
文字列の指定した位置の文字を返します
例)
  “Hello”.at(0)  # => “H”
  “Hello”.at(4)  # => “o”
  “Hello”.at(10) # => nil
  “Hello”.at(-1)  # => “o” 最後から1文字
  “Hello”.at(-4)  # => “e”
  “Hello”.at(-10) # => nil

first

first(長さ:integer 初期値:1)
文字列の先頭から指定した長さの文字列を取得します

例)
  “Hello”.first  # => “H”
  “Hello”.first(3)  # => “Hel”
  “Hello”.first(10) # => “Hello”
  “Hello”.first(0)  # => “Hello”
  “Hello”.first(-3)  # => “He” 最後から4文字目から先頭
  “Hello”.first(-10) # => “”

from

from(位置:integer)
文字列の指定した位置から最後までの文字列を取得します

例)
  “Hello”.from(1)  # => “ello”
  “Hello”.from(3)  # => “lo”
  “Hello”.from(10) # => “”
  “Hello”.from(0)  # => “Hello”
  “Hello”.from(-2)  # => “lo” 最後から2文字目から最後
  “Hello”.from(-10) # => “”

last

last
文字列の最後から指定した長さの文字列を取得します

例)
  “Hello”.last(1)  # => “o”
  “Hello”.last(3)  # => “llo”
  “Hello”.last(10) # => “Hello”
  “Hello”.last(0)  # => “Hello”
  “Hello”.last(-2)  # => “llo” 先頭から2文字目から最後
  “Hello”.last(-10) # => “”

to

to
文字列の先頭から指定した位置までの文字列を取得します

例)
  “Hello”.to(1)  # => “He”
  “Hello”.to(3)  # => “Hell”
  “Hello”.to(10) # => “Hello”
  “Hello”.to(0)  # => “H”
  “Hello”.to(-2)  # => “Hell” 最後から2文字目まで
  “Hello”.to(-10) # => “”

starts_with?

starts_with?
文字列が指定した文字列で始まるかを判定します

例)
  “Hello”.starts_with?(“H”)  # => true
  “Hello”.starts_with?(“Hel”)  # => true
  “Hello”.starts_with?(“Helo”)  # => false
  “Hello”.starts_with?(“ello”)  # => false

ends_with?

ends_with?
文字列が指定した文字列で終わるかを判定します

例)
  “Hello”.ends_with?(“o”)  # => true
  “Hello”.ends_with?(“ello”)  # => true
  “Hello”.ends_with?(“Hel”)  # => false
  “Hello”.ends_with?(“oilo”)  # => false

camelize

camelize(先頭の文字をどうするか:シンボル(:lower小文字|:upper大文字 初期値:upper)
パス形式からRubyのクラス名にする。/は::に変換されます。

例)
  “active_record”.camelize #=> “ActiveRecord”
  “active_record”.camelize(:lower) #=> “activeRecord”
  “active_record/errors”.camelize #=> “ActiveRecord::Errors”
  “active_record/errors”.camelize(:lower) #=> “activeRecord::Errors”

classify

classify
テーブル名をRubyのクラス名にする

例)
  “egg_and_hams”.classify #=> “EggAndHam”
  “post”.classify #=> “Post”

constantize

constantize
文字列のオブジェクトが読み込まれていれば、そのオブジェクトを返す

例)
  “Module”.constantize #=> Module
  “Array”.constantize #=> Array

dasherise

dasherize
「_(アンダースコア)」を「-(ハイフン)」に置換する

例)
 “puni_puni” #=> “puni-puni”

demodulize

demodulize
モジュールの部分を取り除く

例)
  “ActiveRecord::CoreExtensions::String::Inflections”.demodulize #=> “Inflections”
  “Inflections”.demodulize #=> “Inflections”

foreign_key

foreign_key(単語間をアンダースコアで区切るか:boolean 初期値:true)
クラス名から外部キー名にする

例)
  “Message”.foreign_key #=> “message_id”
  “Message”.foreign_key(false) #=> “messageid”
  “Admin::Post”.foreign_key #=> “post_id”

humanize

humanize
アンダースコアで区切られた文字をスペース区切りにし、最初の単語の先頭の文字を大文字にする。また、「_id」があれば削除する。そのことで、人が読みやすい形にする

例)
  “employee_salary” #=> “Employee salary”
  “author_id” #=> “Author”

pluralize

pluralize
複数形にする

例)
  “post”.pluralize #=> “posts”
  “octopus”.pluralize #=> “octopi”
  “sheep”.pluralize #=> “sheep”
  “words”.pluralize #=> “words”
  “the blue mailman”.pluralize #=> “the blue mailmen”
  “CamelOctopus”.pluralize #=> “CamelOctopi”

singularize

singularize
単数形にする

例)
  “posts”.singularize #=> “post”
  “octopi”.singularize #=> “octopus”
  “sheep”.singluarize #=> “sheep”
  “word”.singluarize #=> “word”su
  “the blue mailmen”.singularize #=> “the blue mailman”
  “CamelOctopi”.singularize #=> “CamelOctopus”

tableize

tableize
クラス名をテーブル名にする

例)
  “RawScaledScorer”.tableize #=> “raw_scaled_scorers”
  “egg_and_ham”.tableize #=> “egg_and_hams”
  “fancyCategory”.tableize #=> “fancy_categories”

titleize

titleize
全ての単語の先頭の文字を大文字にする

例)
  “man from the boondocks”.titleize #=> “Man From The Boondocks”
  “x-men: the last stand”.titleize #=> “X Men: The Last Stand”

underscore

underscore
camelizeの逆の処理をする。名前空間を含めたクラス名をパスにする

例)
  “ActiveRecord”.underscore #=> “active_record”
  “ActiveRecord::Errors”.underscore #=> active_record/errors

まとめ

 地味に役立ちそうなものが多い感じですかね。

 camelizeとかはバンバン使えるようになりたいですよ。

記事を共有

最近人気な記事