Home -> HSP講座 -> その他 esqsec

エスケープシーケンス

やたらと長い英単語ですね。Escape Sequence
これがなんなのか、簡単に説明していきます。

	mes "mes 命令は \"文字列\" を表示する命令である。"
	mes "○か×か、手を挙げつつ答えよ。"
	stop

まず、これを実行してみてください。
…………。
どうですか、入力したのは
 "mes 命令は \"文字列\" を表示する命令である。"
なのに、表示されたのは
 mes 命令は "文字列" を表示する命令である。
でした。
どうして \" が " に変わっているのでしょうか!?

これこそが、「エスケープシーケンス (EscapeSequence)」なのです!
このやたら長い英単語は、スクリプト文字列を書く時の特殊ルールのことです!

具体的に言うと、特殊な文字を、別の形で入力するためのルールです。
基本的に、\ とアルファベット1文字を使って表します。

文字 表されるもの
\n 改行を表します。New Line の略。CRLF。
\r 改行を表します。Carriage Return の略。CR。
\t タブスペースを表します。
\" ダブルクォーテーション(")を表します。
\' シングルクォーテーション(')を表します。
\\ 円記号 \ を表します。
\X 小文字の X ( X := 他の半角英文字 )

HSPでは、これだけ使用できます。
前 2つの違い ( CRLF と CR ) は、複雑なので、気にしない方がいいです。通常は \r ではなく \n を使ってください。

" は、文字列を括るという特殊な効果を持っているので、文字列の中で " を使うことができません。

	mes "x = "文字列""
などとすると、謎のスクリプトになってしまうわけです。
そこで、\ を付けると、通常の " になることが出来ます。
このように、\ で特別な意味を失わせることを、エスケープするといいます。
\\ も同様で、特殊ルールに使われる特別な記号だから、エスケープする必要があります。


このルールは必ず適用されます。
"C:\MyDocuments" と書いて、困ることがよくあるので、気をつけてください。

	path = "C:\MyDocuments"
	mes path		// 思ったのと違う!

それと、エスケープシーケンスが適用されるのはスクリプトの文字列、しかも " でくくられているものの中だけです。
普通の文章で \n とか書いても、改行にはならないので注意してください。何を当たり前のことを、と思われるかもしれませんが、勘違いしている人がたまにいるので。


お知らせ

HSP3.0 〜 HSP3.2 についている標準のスクリプトエディタでは、"\\""\"" で終わる文字列の場合、それ以降も文字列だと判断され、一行丸ごと文字列の色になるバグがあります。
このような色分けは、動作には一切影響がありませんので、安心してください。