【解決】変数に特定の文字列が含まれているかどうかで条件分岐させたい。

ゼゼゼ

ユーザー
お世話になっております。ツクールMVのスクリプトについてご相談させていただきます。

変数に文字列を代入後、その変数に特定の文字列が含まれているかどうかで条件分岐をさせたいと思っております。
しかし代入は簡単に出来るのですが、その後の条件分岐のやりかたがわかりません。
一応自分で調べて以下のようなスクリプトを記述してみたのですが、エラー落ちしてしまいます。
どなたかわかるかたがおられましたらご教授いただくようお願いいたします。

if ( $gameVariables.value(10).match(/test/)) {
$gameSwitches.setValue(10,true);
}
 

munokura

ユーザー
お世話になっております。ツクールMVのスクリプトについてご相談させていただきます。

変数に文字列を代入後、その変数に特定の文字列が含まれているかどうかで条件分岐をさせたいと思っております。
しかし代入は簡単に出来るのですが、その後の条件分岐のやりかたがわかりません。
一応自分で調べて以下のようなスクリプトを記述してみたのですが、エラー落ちしてしまいます。
どなたかわかるかたがおられましたらご教授いただくようお願いいたします。

if ( $gameVariables.value(10).match(/test/)) {
$gameSwitches.setValue(10,true);
}

下記のように設定したらエラーにならないですが、想定が違いますかね?
先に変数に何かしらの文字列が入っていないと型が合わないとか?
あとは'/test/'にしてみるとか?

SS03.png
 

ゼゼゼ

ユーザー
>munokura様

ご返信ありがとうございます。
ああ、本当だ。変数の操作で代入すると上手くいきますね。
ただ私は、変数の操作も出来ればスクリプトで行いたいのですが、それだとなぜかエラー落ちしてしまいます。
文章表示で、ちゃんと代入出来ているのは確認できるんですが……。

TypeError
$gameVariables.value(...).match is not a function
と表示されてしまいますね……。

aa.jpg
 
最後に編集:

WTR

ユーザー
[] で囲むと配列型になってしまいます。
文字列型でないと match() が使えないのでエラーになります。

コード:
$gameVariables.setValue(10, "ててすとと");

とすればエラーにならないと思います。
あと、if文でスイッチ操作して、スイッチを条件分岐の判定に使う、って若干回りくどいので
条件分岐のスクリプトに直接書いたほうが素直な気がします。

コード:
◆条件分岐:スクリプト:$gameVariables.value(10).match(/てすと/)

みたいに。
スイッチ1つ節約できます。
もっと言えば、戻り値が配列のmatchメソッドより、シンプルに真偽値が戻るtestメソッドのほうが理にかなってる?
という気がしなくもないので、気が向いたら調べてみるといいかもしれません。
たいした処理ではないので動けばいい思想もいいとは思いますけど。
 

WTR

ユーザー
変数10に文字列以外を代入する可能性があるなら

コード:
◆条件分岐:スクリプト:String($gameVariables.value(10)).match(/てすと/)

のように明示的に型変換しておくといいかもしれません。
 

ゼゼゼ

ユーザー
>WTR様

いろいろとご指導くださりありがとうございます。おかげで無事やりたいことができました。
testメソッドとやらも少し試してみましたが、また同じTypeErrorになったので気が向いた時にでも改めて勉強してみます。

munokura様にも改めてお礼申し上げます。
お二方とも、またなにかありましたらよろしくお願いいたします。

配列を使った処理など、もう少し複雑なことをしようかとも思っているので、もしかしたら後日追記でまた相談するかもしれませんが、ひとまず本件は解決とさせていただきます。
ありがとうございました。
 
最後に編集:
トップ