リストオブジェクトで複数の同じ行を検索する方法につきまして

ホーム フォーラム CF2.5使用法全般 リストオブジェクトで複数の同じ行を検索する方法につきまして

  • このトピックには6件の返信、2人の参加者があり、最後にMidorikoにより4年、 2ヶ月前に更新されました。
7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • 投稿者
    投稿
  • #33676
    Midoriko
    参加者

    お世話になっています、度々すみません。
    以前にもFindstringについて教えて頂きましたが、
    新しく不明点が出ましたので質問させて頂きます。

    同一のリストオブジェクト内に「同じ文字列の行が複数あるかどうか」の判定が
    なかなかうまくいきません。

    例えば”やくそう”という行が2行以上あることを調べる場合、現状は
    1.Findstringで”やくそう”を検索、見つけた場合は行番号を変数に代入
    2.代入された行番号+1以降からさらに”やくそう”を探し、
    3a.それが行番号+1以上だった場合はtlue
    3b.それが行番号+1より下だった場合(先頭に戻って検索してしまうと思うので)はfalse

    としてみましたが、どこか間違っているようで
    “やくそう”の1つめが0行目にあったり、”やくそう”の行が
    連続している場合はtlueになりません。
    解決方法を教えてくださると助かります。

    さらに、”やくそう”が5行以上、10行以上といった判定をしたい場合に
    この方法ではイベントが異様に複雑化してしまうと思いますので、
    同じ行がいくらあっても
    それを判定できるような方法があれば教えて頂きたいです。
    行を削除したり戻したりは、できればNGでお願いします。

    なお2.5+なので子イベントを使用できます。
    よろしくお願いします。

    • このトピックはMidorikoが4年、 2ヶ月前に変更しました。
    #33678
    noru123
    参加者

    Findstringは使っていませんが、こんな感じではどうですか?

    Attachments:
    You must be logged in to view attached files.
    #33680
    Midoriko
    参加者

    お返事ありがとうございます。
    そうかーーループを回す方法がありましたね。
    スッキリしていてとても使いやすいです、活用させて頂きます。

    一点、せっかくの機会ですので追加の質問をさせて頂きます。
    可変文字列との一致を判定する方法ですと完全一致のみを検索できるため
    アイテム名の後ろに個別ステータス(入手した日付や装備品の耐久など)を
    入れてtokenizerで管理するようなケースへの対応は難しいかと思います。

    先頭一致に対応できるようなものも もしあれば教えて頂けると
    後学・他のケースへの応用も含め大変ありがたいです。
    やはりFindstringで同一文字列の複数行を検索するのは難しいでしょうか?

    当面はこちらのご回答のみで充分に助かります。
    ひとまずありがとうございました。

    #33682
    noru123
    参加者

    リストでデータを保管する場合なら、私はtokenizerやString Parserで管理します。
    まず保管データリストには分割文字列を含むデータで管理し、プレイヤーに表示する場合には別のリストを用意して、tokenizerなりString Parserなどで名前だけを分割し表示させます。

    先頭一致はループを回しているときにアイテムカウント0の時に文字列が一致のイベントを追加し、行数を取得すれば、先頭の行数を取得できます。

    #33685
    Midoriko
    参加者

    ご回答ありがとうございます‥‥!

    プレイヤーへの表示は必要ありませんが、なるほど
    追加のリストを用意してtokenizerでアイテム名部分のみをそちらに抽出し、
    そちらを検索すれば 固有データを持たせている場合でも
    可変文字列との一致で判定できますね。

    その方法であれば先頭一致だけでなく、tokenizerで分割・抽出することで
    あらゆるデータを検索できるのでたいへん応用が利きますね。
    耐久度がゼロになったジャンク装備5個と品物1つを交換、
    みたいなイベントも簡単そうです。

    非常に有意義でした、ありがとうございました‥‥!

    #33686
    noru123
    参加者

    処理だけでいいのなら、ループの最初で保管データリストの一行全部をtokenizerで処理して必要なデータを変数などに抽出し、ループの2行目で検索する変数とtokenizerで抽出した変数を比較する感じがいいかもしれません。

    #33697
    Midoriko
    参加者

    お返事ありがとうございます。
    なるほど書き出し用のリストを別に用意しなくても、
    一旦変数や可変文字列に抽出して、その場で判定も確かに可能ですね。

    その方が余計なオブジェクトも増えませんしイベントもクリアになりそうですね。
    試してみます、ありがとうございました‥‥!

7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • このトピックに返信するにはログインが必要です。