とあるはりをの平凡日誌 (PC LIFE) このページをアンテナに追加 RSSフィード




☢Caution!!☢
この日記はバカな私(はりを)が何かを忘れない為に、バカの一つ覚えの如く色んな記事を投稿しています。…が、
あくまでもただの備忘録のひと握りに過ぎず、情報の信憑性や真偽までは保証していません。
極力正しい情報をまとめているつもりですが、万一誤った記事の内容を実行しトラブル等が発生しても
当方は如何なる責任を負いません。自己責任でご利用ください。

以上に同意する方のみ、この雑記帳の閲覧をお願いします。

初めての方はこちらも併せてお読みください。当ブログについて (About)


申し訳ありませんが、使用しているブログシステムの仕様上、基本的に記事へのコメントはできません。(詳しくはAbout参照)
記事への誤字訂正、指摘、情報提供等、何かありましたらチャットに書き置きでもしといてください。

※IEをお使いの方へ※
IEではサイドバーが左側に表示され、記事が隠れてしまう場合があります。(IEとテンプレートの両方のバグです)
「F12 開発者ツール」を開き、ドキュメントモードを「Quirks」にすることで解消されます。

※当ブログが正しく表示されない方へ※
URLスキームがSSL(https://)の場合、正しく表示されません。
お手数ですが、http://に書き換えてアクセスしてください。


ブログ移転のお知らせ
当ブログ「とあるはりをの平凡日誌」は2013年12月6日をもって終了し、
同7日に「はりをきば」と改めはてなブログにスタイリッシュ移転しました。
詳しくはこちら

新しいブログは http://blog.gutyan.jp/ になります。

今までありがとごぜますた。そしてこれからも宜しくお願いしマッスル。m(_ _)m

2013年 6月 14日(金)ややこしいorz

【JavaScript / PHP / Python / Ruby】シングルクォートとダブルクォートの違い まとめ

【JavaScript / PHP / Python / Ruby】シングルクォートとダブルクォートの違い まとめ - とあるはりをの平凡日誌 (PC LIFE) を含むブックマーク はてなブックマーク - 【JavaScript / PHP / Python / Ruby】シングルクォートとダブルクォートの違い まとめ - とあるはりをの平凡日誌 (PC LIFE) 【JavaScript / PHP / Python / Ruby】シングルクォートとダブルクォートの違い まとめ - とあるはりをの平凡日誌 (PC LIFE) のブックマークコメント

ただの備忘録。


面倒なんで、先に答えだけ。




文字列の扱い 遅見表


クォートによる違い
' (シングル)" (ダブル)
JavaScriptパースパース
PHPパース
Pythonパースパース
Rubyパース

パース とだけ書くと は? ってなるけど表の見た目上のアレなんで許せorz

要するに、中の変数や式を展開するかどうか。

(生=しない パース=する)


パースできる項目
逆斜線変数
JavaScript××
PHP
Python×
Ruby



JavaScript

文字列中での展開はバックスラッシュ記法のみ。式や変数の展開はできない。

一度クォートを切って+で繋げるしかない。面倒。

var gundam = 'ガンダム';
alert("俺が…" + gundam + "だっ!!\n");

シングルもダブルも扱いは同じ。好みの問題。

ただ、document.writeやinnerHTML=""などでHTMLタグを直に出力したり

querySelector()で属性値一致指定する場合、

エスケープしないと両方のクォートを使うことになる為

どちらが(どっちのクォートを文字列の定義にすると)見やすいか、よく考えるべき。

document.write('<input type="text" size="30" value="リリーホワイトは俺の嫁">');

document.querySelector("input[value^='リリー']").value = "リリーブラックも俺の嫁";

PHP

PHPは{ }で式や変数を埋め込める。

<?
$messiah = 'メシア';
echo "ワレハ{$messiah}ナリ!! フッハッハッハッハ!!!";

$mes = new stdClass;
$mes->siah = array('マーシアハ', 'メシア', 'メサイア', '飯屋');
echo "ワレハ{$mes->siah[3]}ナリ!! フッハッハッハッハ!!!";
?>

$は外に出すこともできる。

<?
echo "ワレハ${messiah}ナリ!! フッハッハッハッハ!!!";
?>

但し、これだど配列の取り出しができない、プロパティの参照ができないなどの弊害が出る。単純な変数のみ。


{}を外して直接書くことも。

<?
echo "ワレハ$messiah ナリ!! フッハッハッハッハ!!!";
?>

こう書く場合は直後の文字の巻き込みに注意


例えば以下のように書いてしまうと

<?
echo "ワレハ$messiahナリ!! フッハッハッハッハ!!!";
?>

「$messiahナリ」が変数名として認識される。

(PHPは2byte文字が変数・関数名に使える為)


これの何が厄介かって、見た目もそうだけど

PHPには変数の宣言という概念がない(変数名を確認次第その場で利用可能にする)ので、

誤ってこう書いてしまってもエラーが出ず、気づきにくい。


変数名の直後に変数名として無効な文字(一般的には半角スペース)を入れることで

一応回避することはできるが、その無効な文字まで出力されてしまう為

どのみち見た目がよろしくない。

素直に{}で囲おう。うん。


Python

Pythonは基本的にはJSと一緒でクォートの扱いに差はなく、変数や式は外から+で繋げる。

…が、一応 locals() や globals() でそれぞれ対応した変数を展開できたり。

txt = "跪け!"
three = 3
print "%(txt)s %(three)d 分間待ってやる!!" % globals()

PHPと違って直後の空白はなくても良い。(巻き込まない)

…が、見にくいので大人しく+で連結した方がまだマシな気がする。


Ruby

基本はPHPと同じ。#{}が治外法権。

$yukari = ''
print "ばばーん#{"!"} #{$yukari}ちゃん#{20-3}歳!!\n"

def haru
	spring = ''
	print "我が世の#{spring}が来たあぁぁぁぁ!!!\n"
end

haru()

PHPと違い、{}の中は完全に独立している為

上記のように直接文字列を書いたり演算することも。

もちろん、配列の取り出しなどもできる。


変数だけの場合、変数記号($や@)がある場合に限り

PHP同様、{}は省略できる。

print "ばばーん#{"!"} #$yukari ちゃん#{20-3}歳!!\n"

但し、これもPHP同様、直後の文字を巻き込むので

半角スペースなどの無効文字を挟まないと認識しない。

また、先頭記号がない変数(ローカル変数)では使えない。




まとめ

  • 基本はシングル。何かを埋め込む時だけダブル。
  • PHPやRubyのダブルで何かを埋め込む場合、必ず{}で囲む。
  • JSやPythonは黙ってクォート外から連結

結論

_人人人人人人人_

> ややこしい <

 ̄Y^Y^Y^Y^Y^Y ̄



…え? あんだって? Perl??


f:id:HARINEZUMI:20130629224424j:image