ページ 11

【解決済】文字列を置換したい!

Posted: 2025年10月27日(月) 00:23
by ふじうさ
こんばんは、ふじうさです。
連投になっていますが、今回もご教示いただければと思います。

会話している“間”の感じを出そうと、
制御文字「\.(0.25秒ウェイトをかませる)」を随所に入れていたのですが、
「ちょっと、くどいな」と思い、全部削除することにしました。
一からすべて削除するとなると、かなり手間なので、
トリアコンタン様の「メッセージ自動置換プラグイン」(以下URL)を使って一斉置換を試みています。
https://raw.githubusercontent.com/triac ... Replace.js

1のとおり、「\.」を「" "」(何も記載なし)に置換しようとプラグイン設定を行ったのですが、その結果…
1.プラグイン設定.png
2のとおり、「\」だけがメッセージに残ってしまいます。
2.結果.png
プラグインの設定を確認したところ…
{"targetText":"\\.","text":"","switchId":"20"}

上記の通り、「\\」が二つ入っているので、「これが原因か!?」と一つ消してみたところ、今度は…
3の通りエラーを吐き出してしまいます。
3.error!.png
2の時点で、ウェイトは解除されているので、目論見どおりなのですが、
「\」が残ってしまうのは、なぜなのでしょうか。

お手数ですが、ご教示のほどお願いいたします。

Re: 文字列を置換したい!

Posted: 2025年10月28日(火) 20:08
by 名無し蛙
ふじうさ さんが書きました: 2025年10月27日(月) 00:23 2の時点で、ウェイトは解除されているので、目論見どおりなのですが、
「\」が残ってしまうのは、なぜなのでしょうか。
既に答えが書いてある気がしますけど
「\」という文字はJsonファイルに出力される時に全て「\\」に置換されるからです。
その仕様が何故存在するのかと言われたら
ツクール以前にJavaScriptにとって\は重要な意味を持つ文字だからですね。
\を二つ重ねる事でエスケープシーケンスとしての意味は消失し構文エラーを回避出来ます。
実際に使用する時はrmmz_windows.jsの290行目、Window_Base.prototype.convertEscapeCharacters
という処理内で「\\」は「\」に再置換され
ウィンドウ上で扱うテキストに含まれる「\」は「\」として扱われます。

JSONの文字列をエスケープするメソッド
https://leapcell.io/blog/ja/json-no-moj ... uru-method

肝心の質問に答えていない気がするので追記
「「\」が残ってしまうのはなぜなのか(残さない為にはどうすれば良いか)」ですが
置換対象を「\.」ではなく「\\.」と指定してください。
「(厳密には奇数個の置換を実行する場合)何故\が残ってしまうのか」ですが
「\\.」から「\.」を引き算した結果「\」が残ってしまう為です。
偶数の場合表示されなくなるのは「\\」が残っていた場合は無効の制御文字として処理される為です。

Re: 文字列を置換したい!

Posted: 2025年11月07日(金) 00:15
by ふじうさ
名無し蛙さま

お世話になります。ふじうさです。
返信が遅くなってすみません!
試してみたところ、無事に解決できました!
また、構造も少し理解できた(気がします)。
これで本件、解決とさせていただきます。
ありがとうございました!