文字列の操作

参考:

ActiveSupport の String 拡張 (活用形) まとめ – Qiita

文字列内の全ての単語を capitalize する

split / join と capitalize を使う。

"full name".split.map(&:capitalize).join(" ")
# => "Full Name"

titleize を使う。

"full name".titleize
# => "Full Name"

gsubcapitalize を使う。

"full name".gsub(/\b\w/, &:capitalize)
# => "Full Name"

参考:

Ruby capitalize every word first letter – Stack Overflow

camelize

単語の先頭を大文字にしてスペースやアンダースコアを取り除いて連結する。スラッシュは二つのコロンに置き換えられる。(ファイルパス状の文字列をモデルクラス名に変換する。)

"user".underscore      # => "User"
"admin/store_manager"  # => "Admin::StoreManager"

参考:

camelize – String | Ruby on Rails API [Official]

camelize – rails/methods.rb at v5.2.2 · rails/rails – GitHub

underscore

小文字の単語をアンダースコアで接続した形式に変換する。名前空間部分はスラッシュで区切られる。(モデル名をファイルのパスで使用する形式に変換する。)

"User".underscore      # => "user"
"Admin::StoreManager"  # => "admin/store_manager"

参考:

underscore – String | Ruby on Rails API [Official]

underscore – rails/methods.rb at v5.2.2 · rails/rails – GitHub

Converting camel case to underscore case in ruby – Stack Overflow

humanize

最初の単語の先頭の文字を大文字にする。アンダースコアを空白に置き換える。末尾に _id があれば取り除く。

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

参考:

humanize – ActiveSupport::Inflector | Ruby on Rails API [Official]

humanize – String | Ruby on Rails API [Official]

humanize | Rails ドキュメント (railsdoc.com)

titleize

英語の文字列をタイトル形式に変換する。

titleize("man from the boondocks")
# => "Man From The Boondocks"
titleize("x-men: the last stand")
# => "X Men: The Last Stand"
titleize("TheManWithoutAPast")
# => "The Man Without A Past"
titleize("raiders_of_the_lost_ark")
# => "Raiders Of The Lost Ark"
titleize("string_ending_with_id", keep_id_suffix: true)
# => "String Ending With Id"

参考:

titleize – ActiveSupport::Inflector | Ruby on Rails API [Official]

titleize – String | Ruby on Rails API [Official]

titleize_with_dashes

String にメソッドを定義する。

class String
  def titleize_with_dashes
    humanize.gsub(/\b('?[a-z])/) { $1.capitalize }
  end
end

英語の文字列でダッシュを保持したままタイトル形式に変換する。

"my-name is john".titleize_with_dashes
# => "My-Name Is John"

参考:

How to capitalize first letter of each word in the string – Stack Overflow

singularize / pluralize

参考:

Rails で単語の単数・複数変換を制御する | blog.beaglesoft.net

ActiveSupport::Inflector

参考:

ActiveSupport::Inflector の便利な活用形メソッド群 | TechRacho

ActiveSupport の String 拡張 (活用形) まとめ – Qiita

Rails4 でクラス名、DB 名、ファイル名の変換 | Rails Webook

ActiveSupport::Inflector | Ruby on Rails API [Official]

rails/methods.rb at 5-2-stable · rails/rails – GitHub

rails/inflections.rb at 5-2-stable · rails/rails – GitHub

rails/inflector_test.rb at 5-2-stable · rails/rails – GitHub

ActiveSupport::Inflector::Inflections

参考:

Inflections Everywhere: Using ActiveSupport Inflector | Words and Code

ActiveSupport::Inflector::Inflections | Ruby on Rails API [Official]

Inflections – rails/inflections.rb at v5.2.2 · rails/rails – GitHub

rails/inflections.rb at v5.2.2 · rails/rails – GitHub

ActiveSupport による String の拡張

参考:

String | Ruby on Rails API [Official]

rails/inflections.rb at v5.2.2.1 · rails/rails – GitHub

頭字語/アクロニム (acronym)

参考:

大文字略語と ActiveRecord – Qiita

ActiveSupport::Inflector::Inflections#acronym が期待通りで無い件 | こしごぇ (B)

Rails 4.1 ではモジュール配下のクラス名を underscoe するときに acronym の設定を考慮してくれない | There’s an echo in my head

acronym – ActiveSupport::Inflector::Inflections | Ruby on Rails API [Official]

Handling acronyms in rails | Cybrilla TIL

Teaching ActiveSupport proper capitalisation | Coderwall

Fix underscore inflector handling of adjacent acronyms · rails/rails@6a8464f – GitHub

ActiveSupport::Inflector.underscore does not respect acronym inflections within a module · Issue #17193 · rails/rails – GitHub

Rails acronym inflection splitting mid-acronym – Stack Overflow

Rails autoloading fully capitalized name like API – Stack Overflow

How to avoid downcasing acronyms in ruby / rails – Stack Overflow

classify

参考:

classify | Rails ドキュメント (railsdoc.com)

tableize

参考:

tableize | Rails ドキュメント (railsdoc.com)

constantize / const_get

参考:

文字列から Rails のクラスにアクセスしたいとき – Qiita

Ruby の Module#const_get について調べてみた | freedom-man

Calling a namespaced class with Rails constantize inflector – Stack Overflow

deconstantize

定数を修飾する名前空間部分を取得する。

self.class.name.deconstantize

参考:

インスタンスから名前空間を取得する – Qiita

deconstantize – String | Ruby on Rails API [Official]

How do you find the namespace/module name programmatically in Ruby on Rails? – Stack Overflow

demodulize

名前空間を取り除いた定数名を取得する。

self.class.name.demodulize

参考:

demodulize – String | Ruby on Rails API [Official]

How do you find the namespace/module name programmatically in Ruby on Rails? – Stack Overflow

truncate / truncate_words

参考:

truncate – ActionView::Helpers::TextHelper | Ruby on Rails API [Official]

truncate – String | Ruby on Rails API [Official]

truncate_words – String | Ruby on Rails API [Offcial]

Truncate string with Rails? – Stack Overflow

ふりがな/読み仮名/かな/カタカナ/ひらがな/ローマ字変換

参考:

Ruby on Rails で漢字/ひらがな/カタカナをローマ字に変換したい – Qiita

Ruby (および Rails) で漢字、ひらがな、カタカナをローマ字に変換する – Qiita

Ruby で平仮名またはカタカナをローマ字にする | 目指せ、臥薪嘗胆

Rails 3.1 でひらがなをカタカナに変換する方法 | TechRacho

Romaji

参考:

romaji | RubyGems.org

makimoto/romaji: Romaji-Kana transliterator – GitHub

Zipang

参考:

zipang | RubyGems.org

kozo002/zipang – GitHub

日本語を URL 用ローマ字に変換する gem Zipang を作った – Qiita

romkan

参考:

romkan | RubyGems.org

Ruby/Romkan: a Romaji/Kana conversion library for Ruby | 0xcc.net

ローマ字とひらがなを変換する | Ruby Tips!

記事をシェアする:
タグ:

コメントを残す

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

Protected by reCAPTCHA