シングルクォートとダブルクォートの違いについて質問です。
シングルクォートでエスケープできるものでダブルクォートでエスケープできないものがない気がします。
まだ勉強中なのでこれからプログラムを作る上では必要になってくるんでしょうか?
PHPでしょうか?
通常の文字であれば、シングルクォートだけでも十分です。
ダブルクォートは特殊文字や変数などが解析されます。
$name = "A"; $text = "あなたは{$name}さんですね\n"; // あなたはAさんですね(改行) echo $text; $text = 'あなたは{$name}さんですね\n'; // あなたは{$name}さんですね\n echo $text; $text = 'あなたは' . $name . 'さんですね' . "\n"; //シングルクォートで変数等を結合する場合はこんな感じ
シングルクォートでは変数や特殊文字は解析されずにそのまま出力されます。
最後の例のような使い方をすれば、シングルクォートでも問題ありません。
むしろ、シングルクォートのほうが、余計な解析が行われないので実行のスピードもわずかに速くなりますね。
PHPでしょうか?
通常の文字であれば、シングルクォートだけでも十分です。
ダブルクォートは特殊文字や変数などが解析されます。
$name = "A"; $text = "あなたは{$name}さんですね\n"; // あなたはAさんですね(改行) echo $text; $text = 'あなたは{$name}さんですね\n'; // あなたは{$name}さんですね\n echo $text; $text = 'あなたは' . $name . 'さんですね' . "\n"; //シングルクォートで変数等を結合する場合はこんな感じ
シングルクォートでは変数や特殊文字は解析されずにそのまま出力されます。
最後の例のような使い方をすれば、シングルクォートでも問題ありません。
むしろ、シングルクォートのほうが、余計な解析が行われないので実行のスピードもわずかに速くなりますね。
丁寧に解説して頂きありがとうございます。
参考になりました。
どのようなプログラミング言語を指して質問されているのか分かりませんが、一般的にシングルクォーテーションとダブルクォーテーションの評価は異なります。
たとえば、PHPでは、2つのクォーテーションの評価方式が異なるので、エスケープのされ方も異なります。シングルクォーテーションでは \ マークは通常文字として扱われますが、ダブルクォーテーション内ではエスケープ文字として評価されます。
また、SQL文では、一般的に文字列はシングルクォーテーションで囲みます。
ところが、ダブルクォーテーションで囲んでも文字列と評価されるRDBMSがありますし、MySQLではシングルクォーテーションで囲んでも数値として評価されるケースがあります。
丁寧に解説して頂きありがとうございます。
参考になりました。
Hi,
心配する必要はありません。
そんなことは忘れて、勉強してください。
>シングルクォートでエスケープできるものでダブルクォートでエスケープ
>できないものがない気がします
ちゃんとできるようになってます。
世界は破滅しません。
そうですよね。
まずは一通り勉強してみます!!
ありがとうございます。
端的にいうと必要になってきます。
プログラミング言語によって解釈は異なりますが、
C言語派生の言語(C/C++/C#/Java等)では、シングルクオーテーション('a')が「文字」、ダブルクオーテーション("abc")が「文字列(文字配列)」を表します。
スクリプト言語ではシングルクオーテーション('abc')が「単純な文字列」、ダブルクオーテーション("abc$def")が「変数が展開される文字列(C言語で言うところのsprintfのようなもの)」を表します。
またヒアドキュメント(ヒア文字列)といって、改行やエスケープ文字をそのまま認識するタイプの文字列表現もあります。
一方コマンドプロンプトなどのシェル言語では、全体を囲むのがダブルクオーテーション、特定のフラグの引数を分離するのがシングルクオーテーションであるケースが多く、
"C:\hoge\piyo.exe" -a'optionstr' -b 'option str' 'C:\path\to\first file' 'C:\path\to\second file'
のようになります。
一応たいていの場合はシングルクオーテーションを省略したりダブルクオーテーションにしても動きますがごくまれにそうでないものをいます。
URLはダミーです。
お使いになるプログラミング言語の入門サイトを自分でお探しになることをお勧めします。
「言語名 入門」と検索すればすぐに見つかるはずです。
丁寧に解説して頂きありがとうございます。
参考になりました。
「何に」おけるシングルクォートとダブルクォートの違いなのか明記されていないのですが、
直前の質問がphpに関するに関する質問でしたので、「phpにおいて」という前提で回答します。
にあるとおり
ダブルクォートで囲った文字列は特殊文字のエスケープシーケンスを展開してくれますが、
シングルクォートではそれらは展開されず、エスケープを使う意味があるのは
文字列内にシングルクォートを含めたい場合くらいだと思います。
プログラムを作る上では必要になってくるんでしょうか?
ダブルクォートはシングルクォートの機能を兼ねるので
シングルクォートは使わなくてもコーディング自体はできます。
ただ、意識せずに特殊文字のエスケープシーケンスを
うっかり書いてしまうケースがあります
echo '例)C:\new_folder' → 例)C:\new_folder
echo "例)C:\new_folder" → 例)C:(改行される)ew_folder
経験則から言えばこういううっかりミスは意外と見落としやすいので
自分の場合、通常文字列を扱うときは原則シングルクォートを使用して、
特殊文字のエスケープシーケンスを使いたい時のみダブルクォートを使う
という風に使い分けてくだらないミスを避けるようにしています。
丁寧に解説して頂きありがとうございます。
参考になりました。
丁寧に解説して頂きありがとうございます。
参考になりました。