Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

シングルクォーテーションとダブルクォーテーションの違い(Rubyの文字列)

More than 1 year has passed since last update.

シングルクォーテーションとダブルクォーテーション

Rubyでは文字列オブジェクトを作る方法がいくつかありますが、基本的な方法は、ダブルクオーテーション(")か、シングルクオーテーション(')で文字列にしたい文字を囲うことです。

"str"
'str'
"文字列"
'文字列'

シングルクォーテーションとダブルクォーテーションの違い

改行文字列を埋め込みたい場合はダブルで囲む必要がある

他にもインデントを加える(\t)などのリテラルの特殊文字の機能を使うためにはシングルでは使えず、ダブルで加工必要がある。

irb(main):001:0> puts "あああ\nいいい"
あああ
いいい
=> nil

# 改行されてる

irb(main):002:0> puts 'あああ\nいいい'
あああ\nいいい
=> nil

# 改行されてない

式展開(#{ })を埋め込みたい場合はダブルで囲む必要がある

irb(main):001:0> name = '佐藤'
=> "佐藤"
irb(main):002:0> puts "こんにちは、#{name}"
こんにちは、佐藤
=> nil

シングルの中にシングル、ダブルの中にダブルを文字列として入れたい場合はバックスラッシュ

irb(main):001:0> puts '彼は言った\'こんにちは\''
彼は言った'こんにちは'
=> nil

irb(main):002:0> puts "彼は言った\"こんにちは\""
彼は言った"こんにちは"
=> nil

シングルクォーテーション使う必要ある?

というのは、ググると記事としてよく見かけます。

シングルクォーテーション使う場合は、式展開や特殊文字が無いと判断しやすいとありますが、

https://necojackarc.hatenablog.com/entry/2015/09/12/220832

シンタックスハイライトは基本聞いた環境でプログラム書くので、あまりメリットでない。

また、特殊文字を使うかもよと機械に宣言するため、ダブルはシングルより機械に余計な配慮をさせるため、パフォーマンスが落ちる問題は、有意な差はないと書いてあります。

Just use double-quoted strings
So if there's no meaningful performance difference between the two methods of Ruby string instantiation, shouldn't I just pick my favorite? Well, no. The absence of difference makes one better.

Since there is no measurable performance advantage for either, any time (however marginal) spent thinking or talking about a choice between the two is wasted. When you prefer single quoted strings, you have to think when you need interpolation. When you use double quoted strings, you never have to think. (I'd also add, anecdotally, that apostrophes are more prevalent in strings than double quotes, which again means less thinking when using double-quoted strings.)

Therefore always using double-quoted strings results in the least possible wasted time and effort.

https://www.viget.com/articles/just-use-double-quoted-ruby-strings/

ダブルクォートされた文字列を使うだけです
だから、Rubyの文字列インスタンス化の2つのメソッドの間に意味のあるパフォーマンスの違いがない場合、私はただ自分の好みを選んではいけませんか? うーん、ダメ。 違いがなければ、より良いものになります。

測定可能なパフォーマンス上の利点はないので、2人の間の選択について考えたり、話したりするのに費やされる時間は(わずかながらも)浪費されます。 一重引用符で囲まれた文字列が好きなときは、補間が必要なときに考える必要があります。 二重引用符で囲まれた文字列を使用する場合は、決して考える必要はありません。 (二重引用符よりも文字列にアポストロフィが多く見られますが、二重引用符を使用すると考えにくくなります

したがって、二重引用符で囲まれた文字列を使用すると、無駄な時間と労力を最小限に抑えることができます。

Google翻訳

であれば、ダブル一択でいいのではと思いました。今日は以上です。

参考

life-a-tm
人生のイベントや日常生活に密着した比較サイト、情報サイト等様々なウェブサービスを企画・開発・運営
https://life.a-tm.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away