MAXScript の文字列リテラルとは、次のようにダブル クォーテーションで囲まれた 1 つ以上の文字のことです。
"3ds Max" "August 4th, 1997" |
文字列リテラルには、書式なしのダブル クォーテーション以外の文字を入れることができます。「¥」(バックスラッシュ)エスケープ シーケンスを使用することで、一部の便利な制御文字と併せて、ダブル クォーテーションも文字列に入れることができます。
有効なエスケープ シーケンスは次のとおりです。
エスケープ シーケンス |
意味 |
\" |
ダブルクォーテーション |
¥n |
改行 |
¥r |
復帰改行 |
¥t |
タブ |
\* |
アスタリスク |
\? |
疑問符 |
\\ |
単一の「¥」 |
\% |
パーセント |
¥x{d} |
16 進数 |
例: |
print "foo should be quoted like this: \"foo\" and a new line: \n" |
次のように出力されます。 |
"foo should be quoted like this: "foo" and a new line: " |
「¥」文字の後ろに指定文字がない場合は、「」は単一のバックスラッシュです。
次のように文字列リテラルをいくつかの行に分割することができますが、改行は文字列内に残ります。
例: |
"Twas brillig and the slithy tobes did gyre and gimbol in the wabe or something like that..." |
文字列内の出力されない文字
C/C++ の ¥x 16 進数エスケープ シーケンス規約を使って、出力されない文字を文字列リテラルに指定することができます。形式は次のとおりです。
\x{<hex_digit>}+ -- <hex_digit> is a hexadecimal digit (0-9,a-f)
例: |
str = "Copyright \xa9 1997, FrabWorks, Inc" |
著作権記号(c)が挿入されます。16進数の a9 は、著作権記号のコードです。 |
次のスクリプトを実行すると、個々の 16 進数コードに関連付けられた文字がリスナーに表示されます。
例: |
char= "0123456789abcdef" for i=1 to char.count do for j=1 to char.count do ( s=execute("\"\\x"+char[i]+char[j]+"\"") format "%% %\n" char[i] char[j] s ) |
ファイルのパス名文字列
ファイルのパス名文字列では、親ディレクトリとサブディレクトリを区切るためにバックスラッシュを使用します。バックスラッシュはエスケープ文字として使用されるため、ファイルのパス名を文字列で指定するには、単一の「¥」にエスケープ文字シーケンスを使用する必要があります(つまり、「¥¥」となります)。または、3ds Max 2008 で導入された「@」を使用して、文字列をそのまま逐語的に出力されるテキストとして指定します(詳細はこのページで説明しています)。
例: |
scene_path = "g:\\3dsmax25\\scenes" -- specifies file path g:\3dsmax25\scenes |
ファイル名またはパスとして使用されている文字列には、「¥¥」の代わりに「/」文字を使用できます。MAXScript によって内部的に「/」文字が「¥」文字に変換されます。
例: |
scene_path = "g:/3dsmax25/scenes" -- specifies file path g:\3dsmax25\scenes |
逐語的文字列リテラル
3ds Max 2008 で MAXScript に追加された逐語的に出力される文字列リテラルは、プレフィックスとして「@」を使用します。「¥t」、「¥n」、「¥r」などのようにバックスラッシュ エスケープ文字シーケンスが含まれていてもこれらは展開されません。
構文は次のようになります。
@"{<character>}+"
例: |
--the following verbatim string remains unchanged after evaluation: thePath = @"g:\temp\newfolder\render" |
"g:\temp\newfolder\render" |
--while the following results in a --scrambled string with tabs and new lines: thePath = "g:\temp\newfolder\render" |
"g: emp ewfolder ender" |