サーチ…


備考

ActiveSupportは、他のRailsフレームワークで使用されている汎用ツールのユーティリティ宝です。

これらのツールを提供する主な方法の1つは、RubyのネイティブタイプをMonkeypatchingすることです。これらをコア拡張と呼びます。

コア拡張:文字列アクセス

String#at

文字列オブジェクトの部分文字列を返します。 String#[]同じインタフェースです。

str = "hello"
str.at(0)      # => "h"
str.at(1..3)   # => "ell"
str.at(-2)     # => "l"
str.at(-2..-1) # => "lo"
str.at(5)      # => nil
str.at(5..-1)  # => ""

String#from

指定された位置から文字列の最後までの部分文字列を返します。

str = "hello"
str.from(0)  # => "hello"
str.from(3)  # => "lo"
str.from(-2) # => "lo"

String to〜

文字列の先頭から指定された位置までの部分文字列を返します。
位置が負の場合は、文字列の最後から数えられます。

str = "hello"
str.to(0)  # => "h"
str.to(3)  # => "hell"
str.to(-2) # => "hell"

fromtoは一度に使用できます。

str = "hello"
str.from(0).to(-1) # => "hello"
str.from(1).to(-2) # => "ell"

最初の文字列#

最初の文字、または指定された文字数を文字列の長さまで返します。

str = "hello"
str.first    # => "h"
str.first(1) # => "h"
str.first(2) # => "he"
str.first(0) # => ""
str.first(6) # => "hello"

ストリング#最後

最後の文字、または後方に数える文字列の最後から指定された文字数を返します。

str = "hello"
str.last    # => "o"
str.last(1) # => "o"
str.last(2) # => "lo"
str.last(0) # => ""
str.last(6) # => "hello"

コア拡張:文字列から日付/時刻への変換

ストリング#to_time

文字列をTime値に変換します。 formパラメータは、 :utcまたは:localいずれか:utc 。デフォルトは:localです。

"13-12-2012".to_time               # => 2012-12-13 00:00:00 +0100
"06:12".to_time                    # => 2012-12-13 06:12:00 +0100
"2012-12-13 06:12".to_time         # => 2012-12-13 06:12:00 +0100
"2012-12-13T06:12".to_time         # => 2012-12-13 06:12:00 +0100
"2012-12-13T06:12".to_time(:utc)   # => 2012-12-13 06:12:00 UTC
"12/13/2012".to_time               # => ArgumentError: argument out of range

ストリング#to_date

文字列をDate値に変換します。

"1-1-2012".to_date   # => Sun, 01 Jan 2012
"01/01/2012".to_date # => Sun, 01 Jan 2012
"2012-12-13".to_date # => Thu, 13 Dec 2012
"12/13/2012".to_date # => ArgumentError: invalid date

文字列#to_datetime

文字列をDateTime値に変換します。

"1-1-2012".to_datetime            # => Sun, 01 Jan 2012 00:00:00 +0000
"01/01/2012 23:59:59".to_datetime # => Sun, 01 Jan 2012 23:59:59 +0000
"2012-12-13 12:50".to_datetime    # => Thu, 13 Dec 2012 12:50:00 +0000
"12/13/2012".to_datetime          # => ArgumentError: invalid date

コア拡張:文字列の除外

文字列#除外?

String#include?の逆String#include?

"hello".exclude? "lo" # => false
"hello".exclude? "ol" # => true
"hello".exclude? ?h   # => false

コア拡張:文字列フィルタ

文字列#squish

先頭または末尾の空白のない指定された文字列のバージョンを返し、内部の連続したすべての空白を単一の空白に結合します。破壊的なバージョンsquish!文字列インスタンスに対して直接的に動作します。

ASCIIとUnicodeの両方の空白を扱います。

%{ Multi-line
   string }.squish                   # => "Multi-line string"
" foo   bar    \n   \t   boo".squish # => "foo bar boo"

文字列#remove

すべてのパターンが削除された新しい文字列を返します。破壊的なバージョンremove!指定された文字列に対して直接動作します。

str = "foo bar test"
str.remove(" test")                 # => "foo bar"
str.remove(" test", /bar/)          # => "foo "

ストリング#切り詰め

文字列が長さよりも長い場合、指定された長さで切り捨てられた指定文字列のコピーを返します。

'Once upon a time in a world far far away'.truncate(27)
# => "Once upon a time in a wo..."

文字列または正規表現を渡す:separator自然な区切りで切り捨てるための:separator文字

'Once upon a time in a world far far away'.truncate(27, separator: ' ')
# => "Once upon a time in a..."

'Once upon a time in a world far far away'.truncate(27, separator: /\s/)
# => "Once upon a time in a..."

文字列#truncate_words

与えられた単語数の後に切り捨てられた文字列を返します。

'Once upon a time in a world far far away'.truncate_words(4)
# => "Once upon a time..."

文字列または正規表現を渡して、異なる単語の区切り文字を指定する

'Once<br>upon<br>a<br>time<br>in<br>a<br>world'.truncate_words(5, separator: '<br>')
# => "Once<br>upon<br>a<br>time<br>in..."

最後の文字は:omission文字列(デフォルトは "...")に置き換えられます。

'And they found that many people were sleeping better.'.truncate_words(5, omission: '... (continued)')
# => "And they found that many... (continued)"

ストリング#strip_heredoc

heredocsのインデントを削除します。最もインデントされていない空でない行が検索され、先頭の空白が削除されます。

if options[:usage]
  puts <<-USAGE.strip_heredoc
    This command does such and such.

    Supported options are:
      -h         This message
      ...
  USAGE
end

ユーザは、

This command does such and such.

Supported options are:
-h         This message
...

コア拡張:String Inflection

文字列#複数行

複数形の文字列を返します。オプションでcountパラメータをとり、 count count == 1場合は特異形式を返します。言語固有の複数化のためのlocaleパラメーターも受け入れlocale

'post'.pluralize             # => "posts"
'octopus'.pluralize          # => "octopi"
'sheep'.pluralize            # => "sheep"
'words'.pluralize            # => "words"
'the blue mailman'.pluralize # => "the blue mailmen"
'CamelOctopus'.pluralize     # => "CamelOctopi"
'apple'.pluralize(1)         # => "apple"
'apple'.pluralize(2)         # => "apples"
'ley'.pluralize(:es)         # => "leyes"
'ley'.pluralize(1, :es)      # => "ley"

文字列#singularize

文字列の単数形を返します。オプションのlocaleパラメータを受け入れます。

'posts'.singularize            # => "post"
'octopi'.singularize           # => "octopus"
'sheep'.singularize            # => "sheep"
'word'.singularize             # => "word"
'the blue mailmen'.singularize # => "the blue mailman"
'CamelOctopi'.singularize      # => "CamelOctopus"
'leyes'.singularize(:es)       # => "ley"

文字列#constantize

文字列で指定された名前で宣言された定数を見つけようとします。名前がNameErrorにない場合、または初期化されていない場合、 NameError発生します。

'Module'.constantize  # => Module
'Class'.constantize   # => Class
'blargle'.constantize # => NameError: wrong constant name blargle

String#safe_constantize

constantize実行しますが、 NameErrorNameErrorせる代わりにnilを返します。

'Module'.safe_constantize  # => Module
'Class'.safe_constantize   # => Class
'blargle'.safe_constantize # => nil

String#camelize

場合は、デフォルトでUpperCamelCaseに文字列を変換し:lower paramは代わりにlowerCamelCaseに変換として与えられています。

エイリアス: camelcase

注意: /::に変換し、パスを名前空間に変換するのに便利です。

'active_record'.camelize                # => "ActiveRecord"
'active_record'.camelize(:lower)        # => "activeRecord"
'active_record/errors'.camelize         # => "ActiveRecord::Errors"
'active_record/errors'.camelize(:lower) # => "activeRecord::Errors"

文字列#titleize

すべての単語を大文字にし、文字列内の一部の文字を置換してより見栄えの良いタイトルを作成します。

エイリアス: titlecase

'man from the boondocks'.titleize # => "Man From The Boondocks"
'x-men: the last stand'.titleize  # => "X Men: The Last Stand"

ストリング#アンダースコア

文字列内の式から小文字のアンダースコアを作成します。 camelizeの逆。

注意: underscore:: to /を変更して名前空間をパスに変換します。

'ActiveModel'.underscore         # => "active_model"
'ActiveModel::Errors'.underscore # => "active_model/errors"

ストリング#dasherize

文字列の下線をダッシュ​​で置き換えます。

'puni_puni'.dasherize # => "puni-puni"

文字列#demodulize

文字列の定数式からモジュールの部分を削除します。

'ActiveRecord::CoreExtensions::String::Inflections'.demodulize # => "Inflections"
'Inflections'.demodulize                                       # => "Inflections"
'::Inflections'.demodulize                                     # => "Inflections"
''.demodulize                                                  # => ''

文字列#deconstantize

文字列内の定数式から最も右のセグメントを削除します。

'Net::HTTP'.deconstantize   # => "Net"
'::Net::HTTP'.deconstantize # => "::Net"
'String'.deconstantize      # => ""
'::String'.deconstantize    # => ""
''.deconstantize            # => ""

String#parameterize

文字列内の特殊文字を置き換えて、「pretty」URLの一部として使用できるようにします。

"Donald E. Knuth".parameterize # => "donald-e-knuth"

:preserve_case引数を使用して、文字列内の文字の大文字と小文字を:preserve_caseます。

"Donald E. Knuth".parameterize(preserve_case: true) # => "Donald-E-Knuth"

parameterize化の非常に一般的な使用事例は、ActiveRecordモデルのto_paramメソッドをオーバーライドして、よりto_param URLスラッグをサポートすることです。

class Person < ActiveRecord::Base
  def to_param
    "#{id}-#{name.parameterize}"
  end
end

Person.find(1).to_param # => "1-donald-e-knuth"

文字列#tableize

モデルからテーブル名へのRailsのようなテーブルの名前を作成します。文字列の最後の単語をPluralizeします。

'RawScaledScorer'.tableize # => "raw_scaled_scorers"
'ham_and_egg'.tableize     # => "ham_and_eggs"
'fancyCategory'.tableize   # => "fancy_categories"

String#classify

テーブル名からモデルへのRailsのように複数のテーブル名からクラス名文字列を返します。

'ham_and_eggs'.classify # => "HamAndEgg"
'posts'.classify        # => "Post"

文字列#humanize

最初の単語を大文字に変換し、アンダースコアをスペースに変換し、存在する場合は_idます。

'employee_salary'.humanize              # => "Employee salary"
'author_id'.humanize                    # => "Author"
'author_id'.humanize(capitalize: false) # => "author"
'_id'.humanize                          # => "Id"

ストリング#upcase_first

最初の文字だけを大文字に変換します。

'what a Lovely Day'.upcase_first # => "What a Lovely Day"
'w'.upcase_first                 # => "W"
''.upcase_first                  # => ""

文字列#foreign_key

クラス名から外部キー名を作成します。名前とid間に_を追加できないようにするには、 false paramを渡しfalse

'Message'.foreign_key        # => "message_id"
'Message'.foreign_key(false) # => "messageid"
'Admin::Post'.foreign_key    # => "post_id"


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow