【転載】文字列の比較はできますか?

21 views
Skip to first unread message

メール質問者

unread,
Mar 15, 2016, 2:11:08 AM3/15/16
to ノベルスフィア サポートフォーラム
移植の際、既に書かれているプログラムを書き換えるのはやはり大変です。
Nスクのプログラムを見ると、文字列比較が出来るととても移植がやりやすいかもなと思いまして^^;
C言語ですが、これなんかイメージに近いです。

----------
この質問および回答は問い合わせメール ( sup...@gengosha.co.jp ) 宛に
いただきました内容を許可を得て転載したものになります。

鈴木

unread,
Mar 15, 2016, 2:11:52 AM3/15/16
to ノベルスフィア サポートフォーラム
C言語には明るくないのですが、文字列比較をするような場合には、
O₂ EngineはJavaScriptを直接叩く形で処理するようになっています。
[eval]タグないし[o2_iscript]タグを用います。

この辺りが参考になるかと存じます。

メール質問者

unread,
Mar 15, 2016, 2:12:37 AM3/15/16
to ノベルスフィア サポートフォーラム
http://www1.kiy.jp/~yoka/TechNote/TechNote_JavaScript.html#■文字列の比較

このページにおける、substrという命令で文字列の冒頭を抜き出し、
それを==演算子で比較してみる。というのが丁度私のやりたい事と同じです。

この場合、
[if o2_exp="mp.file.substr(0,4)=='hoge'"]
などと書いてみましたが、上手く動作しませんでした。

evalタグによる変数がまだいまひとつわかっていないかもしれないので、
おかしな事をやっているかもしれませんが、先程いただいたメールでお教えいただいた事は
こういった記述方法とは全く違うお話だったでしょうか?

鈴木

unread,
Mar 15, 2016, 2:13:14 AM3/15/16
to ノベルスフィア サポートフォーラム
```
mp.file.substr(0,4)=='hoge'
```

この記述は、JavaScript文としては正しいです。
mp.fileに格納されている文字列が「hoge」で始まる場合、上記の文はtrueを返します。
そこで、「うまく動作しない」理由ですが、

1. マクロの記述方法が正しくない
2. [if]タグの記述方法が正しくない

というのが考えられます。この両者は詳しい動作をHTMLの閉じタグの要領で囲んだ中で記述する必要があります。
例えば以下のような記述だと、メール質問者さんが記述したタグは機能します。

```
[macro name="sample_macro"]
  [if o2_exp="mp.file.substr(0,4)=='hoge'"]
    先頭にはhogeがつきます
  [else]
    先頭にはhogeがつきません
  [endif]
  [waitclick]
[endmacro]

;以下のタグは「先頭にはhogeがつきません」が表示されます
[sample_macro file="fugafuga"]

;以下のタグは「先頭にはhogeがつきます」が表示されます
[sample_macro file="hogefugafuga"]
```

また、O₂ EngineではUTF-8で原則動作しますので、もしかしたら文字コードの問題という可能性もございます。
いずれにせよスクリプトごと/プロジェクトごとをいただけると問題を発見しやすいので、問題なければご送付ください。
Reply all
Reply to author
Forward
0 new messages