ページ 1 / 1
変数内に格納できる文字列の操作について
Posted: 2016年7月30日(土) 13:40
by フタツギ
はじめまして。
スクリプトについてよく分かってないところがたくさんあるので質問させて下さい。
変数に「'」か「"」で文字列を囲むとその文字列を変数内に格納し、「文章の表示」でその文字列を表示出来ることを知りました。それを知ってから文字列も使ったゲームを考えているのですが、変数操作で文字列を合わせたり削ったりしようとしても、代入や加算でしか上手く文字列を処理してくれません。
したい操作としては
「文字列Aから文字列Bを削除する」
「文字列Aに格納されている最初の文字もしくは最後の文字を切り取る、また切り取った文字を他に代入する」
「文字列Aに格納されている文字数を数える」
「文字列Aに入っている文字列Bを文字列Cに置換する」
「文字列Aにある文字列Bまでの文章を切り取る」
などがあるのですが、良ければやり方を教えていただけないでしょうか。
よろしくお願いします。
Re: 変数内に格納できる文字列の操作について
Posted: 2016年7月30日(土) 15:49
by yamachan
こんにちは!
MVというより、JavaScript に関する初歩的な質問なので、まずはJavaScript関連の入門書やページを参照すると良いとおもいます。
例えば以下のような
https://developer.mozilla.org/ja/docs/W ... cts/String
ググると、以下のような例が山のようにヒットします。
文字列Aから文字列Bを削除する -> "ABCDEFG".replace("BCD", "")
文字列Aに格納されている文字数を数える -> "ABCDEFG".length
文字列Aに入っている文字列Bを文字列Cに置換する -> "ABCDEFG".replace("BCD", "bcd")
最初の文字 -> "ABCDEFG".charAt(0)
最後の文字 -> "ABCDEFG".charAt("ABCDEFG".length -1)
ご質問の件はほとんど基本関数のサンプルにありますが、正規表現を使えば更に複雑な処理もできます。
スクリプトで使うときは文字列 "ABCDEFG"などは実際には変数22の場合には $gameVariables.value(22) などに置き換えてください。
ではでは。
Re: 変数内に格納できる文字列の操作について
Posted: 2016年7月30日(土) 19:29
by フタツギ
yamachanさんこんばんは!返信ありがとうございます!
JavaScriptを調べなければならなかったんですね・・・ツクールMVの、スクリプトやプラグインといった調べ方しかしてませんでした。教えてくださったサイトも参考にしつつ、今後はそちらも調べて勉強します!
ただ、試しに上のように入力してみましたが「文章の表示」での変化はありませんでした・・・
「あいうえお」を代入する
↓
文字列中の「い」を「か」に置き換える
↓
最初の文字を抜き取る
・・・となって「文章の表示」には「あ」と出力されると思ったのですが上手くいきませんでした。入力しているスクリプト上の文をいじったらエラーが出るので、スクリプト自体はしっかり動いているはずなんですが。
申し訳ありませんが、良ければ入力の仕方など、間違っているところがあれば教えてもらえないでしょうか。
よろしくお願いします。
Re: 変数内に格納できる文字列の操作について
Posted: 2016年7月30日(土) 19:35
by 奏ねこま
横から失礼します。
例えば「$gameVariables.value(1).replace("い", "か")」ですが、これは$gameVariables.value(1)自体を書き換えるものではなく、
「い→か」に置き換えた「あかうえお」という文字を「新しく作り出す」スクリプトです。
変数001の文字列自体を変えたいのであれば、新し作り出された「あかうえお」を変数001に代入してあげなければなりません。
なので、これらのスクリプトはイベントコマンド「変数の操作...」の中のスクリプトに書くようにしましょう。
他のスクリプトについても同様です。
Re: 変数内に格納できる文字列の操作について
Posted: 2016年7月30日(土) 20:24
by フタツギ
@こまさん返信ありがとうございます!
無事思っていた通りの処理で実行されました。yamachanさん、@こまさん、ありがとうございました!
スクリプトコマンドでの処理と変数の処理コマンドでのスクリプトの処理に違いがあったんですね・・・
最初のスクリプトコマンドの方で、変数内に「あいうえお」と文字列が代入出来たので、てっきりそちらで全部処理出来てしまうのだと思っていました。イマイチ違いが分かってませんが、今後気を付けて作っていきます。
ヘルプでも分からなくて、言語のサイトを見て入力してみても上手くいかずで正直ちんぷんかんぷんでした。
本当にありがとうございます!頑張ります!