なでしこ、ワイルドカードのバグ回避(暫定)
なでしこのバグ報告版にも投稿しましたが
ワイルドカードのORパターンにした場合一部の文字で正しく処理できないのです。
問題の文字があるとそれ以降のパターンを無視してマッチしてしまいます。
SWinXさんに原因を究明して頂きなんとかすっきりしました。
2バイト目に『|』と同じバイナリコードが来る文字列が問題です。
まともな回避策がシンプルな方法では浮かばないのでとりあえず、
問題の文字以降の判定がなされるように以下のように暫定処理しています。
WCバグ文字とはワイルドカードバグ文字 S=「ポ掃」//バグが発生する文字2バイト目に"|"($7c)を含むポや掃を"?"に置換える SをWCバグ文字の置換 Sを言う ■ワイルドカードバグ文字 ・{配列}禁止文字 ・作る〜Cを$80から$FFまで繰り返す、CHR(C*256+$7C)を禁止文字に配列追加 ・置換({参照渡し}Sを|Sの)〜禁止文字を反復、S=Sの対象を"?"にシステム:置換
問題のある文字の抜き出しにSWinXさんのコードを流用しています。
余計な文字まで入るらしいですが今回は取りあえず動けばよいのでお構いなしです。