ページトップへ戻る

DIGITAL DNA
2019.08.12 - 2019.10.12
Max Script 基本文法:文字列

目次
「MaxScriptヘルプ」の見かた
デバッグ用に変数の値などを表示したい
スクリプトファイルの拡張子
コメントの記述

・MaxScript基本文法
 ├変数
 ├演算子
 ├文字列
 ├配列
 ├ループ
 ├条件分岐・エラー回避処理
 └関数(Function)



文字列
ヘルプ
[HELP] MAXScript 言語リファレンス > [値] > 基本的なデータ値 > 文字列値


特殊文字の表示(エスケープ文字、エスケープシーケンス)
解説とメモ
リスナーに文字を表示するには print を使います。
通常、print "表示したいテキスト" のように、文字列をダブルクォートでくくると表示することができます。しかし、一部の記号はそのままでは表示することができません。
たとえば、 \ マークを表示するには 「\\」と記述する必要があります。
また、文章の途中で改行させたい場合「\n」と記述することで改行されます。
特殊な記述が必要なものは下記の通りです。

表示したい文字記述方法
\\\
¥
#\#
%\%
改行\n
&&  ※ &は&のまま記述します。


ヘルプ
[HELP] MAXScript 言語リファレンス > 名前、リテラル定数、および式 > リテラル定数 > 文字列リテラル


文字列の連結
解説とメモ
文字列どうしを足し算することで、文字列の連結ができます。
string型の変数を足すことも可能です。


基本的な書式
・[文字列] + [文字列]
・[文字列型の変数] + [文字列型の変数]


記述例
例1:"テキスト" + "テキスト"
例2:words1 + words2
例3:"1行目" + "/n" + "2行目"


文字列を数値に変換
解説とメモ
as で文字列の型から、integer型などの数値の型に変換します。


基本的な書式
[変数名] as integer


記述例
flag1 as integer


数値を文字列に変換
解説とメモ
as で数値の型の変数から、文字列の型に変換します。


基本的な書式
[変数名] as string


記述例
flag1 as string


文字列一致
解説とメモ
文字列の中に、特定の文字列が含まれているか調べるには、findString を使います。
見つからなかった場合は、undefined が返ってきます。


基本的な書式
findString [探される側の文字列] [探したい文字列]


記述例
findString "is if all one two!" "all"


文字列の文字数を取得
解説とメモ
文字列の文字数を数えるには、 .count を使います。
2バイト系文字(全角文字)も1文字としてカウントされます。
改行 (\n) はカウントされません。 \ (\\)もカウントされません。


記述例
例1:"文字列".count
例2:[変数名].count


Max Scriptのサンプル
編集ウィンドウでの記述例
flag1 = "abcdefg" as string
flag1.count
リスナーの表示結果
"abcdefg"
7


Max Scriptのサンプル
編集ウィンドウでの記述例
flag1="あいうえお" as string
flag1.count
リスナーの表示結果
5


文字列の部分抽出
解説とメモ
文字列の中から一部分を取り出すには substring を使います。
抽出する文字数 に -1 を指定すると、 抽出開始位置から最後までを抽出します。
2バイト系文字も1文字として処理されます。


記述例
substring [抽出元の文字列] [何文字目から抽出するか] [抽出する文字数]


Max Scriptのサンプル
en = "ABCDEFGHI"
ss = substring en 5 3--"EFG"を返します
ss = substring en 5 -1 --"EFGHI"を返します
ss = substring en 5 100 --"EFGHI"を返します

jp = "あいうえおabcde"
ss = substring jp 3 6--"うえおabc"を返します
ss = substring jp 6 3--"abc"を返します


文字列部分置換
解説とメモ
文字列の一部分を置換するには replace を使います。


記述例
replace [置換元の文字列] [何文字目から置換するか] [何文字目まで置換するか] [置換する文字列]


Max Scriptのサンプル
s="1234567890"
s1 = replace s 5 3 "***" --元の文字列の567の部分を***に置換します


応用:文字列と数値の連結(連番になっているオブジェクト名の生成)
解説とメモ
for文などを使って、名前が連番になっているオブジェクトを選択する処理を作る方法について説明します。
例えば、maxのシーン上に、box001 , box002 , box003 … box009 というオブジェクトがあるとします
for 文をつかって[box+数値]というオブジェクト名を生成する方法です。


処理のポイント
1:[文字列] + ([数値] as string) で オブジェクト名を生成
2:[処理コマンド] + [オブジェクト名] で処理を作成
3:execute で処理を実行


Max Scriptのサンプル
Box001~Box009までオブジェクト名が連番になっている状態で、これら9つのオブジェクトを選択するスクリプト。

一般的な書き方(オブジェクト名を配列に持たせる)
(
	clearSelection()
	local objlist = #($Box001,$Box002,$Box003,$Box004,$Box005,$Box006,$Box007,$Box008,$Box009)
	for i=1 to i=9 do
	(
		selectMore objlist[i]
	)
)

連番になっているオブジェクト名を生成する例
-- オブジェクト名を生成したあと、excecuteを使って実行させています。
(
	clearSelection()
	for i=1 to i=9 do
	(
		str = "selectmore $Box00"+ (i as string)
		execute str
	)
)