人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

質問です。初歩的な質問です。
シングルクォートとダブルクォートの違いについて質問です。
シングルクォートでエスケープできるものでダブルクォートでエスケープできないものがない気がします。
まだ勉強中なのでこれからプログラムを作る上では必要になってくるんでしょうか?




●質問者: kasai-de_eb
●カテゴリ:インターネット ウェブ制作
✍キーワード:いもの エスケープ クォート シングル ダブル
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● wizemperor
●20ポイント ベストアンサー

PHPでしょうか?

通常の文字であれば、シングルクォートだけでも十分です。

ダブルクォートは特殊文字や変数などが解析されます。

$name = "A";
$text = "あなたは{$name}さんですね\n"; // あなたはAさんですね(改行)
echo $text;

$text = 'あなたは{$name}さんですね\n'; // あなたは{$name}さんですね\n
echo $text;

$text = 'あなたは' . $name . 'さんですね' . "\n"; //シングルクォートで変数等を結合する場合はこんな感じ

シングルクォートでは変数や特殊文字は解析されずにそのまま出力されます。

最後の例のような使い方をすれば、シングルクォートでも問題ありません。

むしろ、シングルクォートのほうが、余計な解析が行われないので実行のスピードもわずかに速くなりますね。


http://d.hatena.ne.jp/kasahi/20070815/1187201809

◎質問者からの返答

丁寧に解説して頂きありがとうございます。

参考になりました。


2 ● pahoo
●20ポイント

どのようなプログラミング言語を指して質問されているのか分かりませんが、一般的にシングルクォーテーションとダブルクォーテーションの評価は異なります。


たとえば、PHPでは、2つのクォーテーションの評価方式が異なるので、エスケープのされ方も異なります。シングルクォーテーションでは \ マークは通常文字として扱われますが、ダブルクォーテーション内ではエスケープ文字として評価されます。


また、SQL文では、一般的に文字列はシングルクォーテーションで囲みます。

ところが、ダブルクォーテーションで囲んでも文字列と評価されるRDBMSがありますし、MySQLではシングルクォーテーションで囲んでも数値として評価されるケースがあります。


参考サイト

◎質問者からの返答

丁寧に解説して頂きありがとうございます。

参考になりました。


3 ● itss
●20ポイント

Hi,

心配する必要はありません。

そんなことは忘れて、勉強してください。

http://q.hatena.ne.jp/answer

>シングルクォートでエスケープできるものでダブルクォートでエスケープ

>できないものがない気がします

ちゃんとできるようになってます。

世界は破滅しません。

◎質問者からの返答

そうですよね。

まずは一通り勉強してみます!!

ありがとうございます。


4 ● hirotow
●20ポイント

端的にいうと必要になってきます。

プログラミング言語によって解釈は異なりますが、

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'

のようになります。

一応たいていの場合はシングルクオーテーションを省略したりダブルクオーテーションにしても動きますがごくまれにそうでないものをいます。

http://www.contoso.com/

URLはダミーです。

お使いになるプログラミング言語の入門サイトを自分でお探しになることをお勧めします。

「言語名 入門」と検索すればすぐに見つかるはずです。

◎質問者からの返答

丁寧に解説して頂きありがとうございます。

参考になりました。


5 ● mintan
●20ポイント

「何に」おけるシングルクォートとダブルクォートの違いなのか明記されていないのですが、

直前の質問がphpに関するに関する質問でしたので、「phpにおいて」という前提で回答します。

PHP: 文字列 - Manual

にあるとおり

ダブルクォートで囲った文字列は特殊文字のエスケープシーケンスを展開してくれますが、

シングルクォートではそれらは展開されず、エスケープを使う意味があるのは

文字列内にシングルクォートを含めたい場合くらいだと思います。

プログラムを作る上では必要になってくるんでしょうか?

ダブルクォートはシングルクォートの機能を兼ねるので

シングルクォートは使わなくてもコーディング自体はできます。

ただ、意識せずに特殊文字のエスケープシーケンスを

うっかり書いてしまうケースがあります

echo '例)C:\new_folder' → 例)C:\new_folder

echo "例)C:\new_folder" → 例)C:(改行される)ew_folder

経験則から言えばこういううっかりミスは意外と見落としやすいので

自分の場合、通常文字列を扱うときは原則シングルクォートを使用して、

特殊文字のエスケープシーケンスを使いたい時のみダブルクォートを使う

という風に使い分けてくだらないミスを避けるようにしています。

◎質問者からの返答

丁寧に解説して頂きありがとうございます。

参考になりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ