昨日のコメントの回答ついでにちょっと考え直し。

というか…、普段の仕事で使っている頭で考えたので、
汎用的なデータの展開をやってしまったのが最大の間違い。

まあ何を言いたいのかというと、スペースで区切ったら
英語が単語毎に分解されちまいました6(--;
入力画面作ってテストパターン入れたら見事にばらんばらん。

要するに、「Ninja of the Deep Hours」って入れたら、
NinjaとofとtheとDeepとHoursに分解されて検索したので、
凄い勢いでマッチングしました…orz

ということでロジックを少し考え直し。

まずは数字とスペースを全て半角に展開。
その後「数字 区切り 文字列」か「文字列 区切り 数字」かを確認。
(正規表現より展開して先頭と最後の要素を確認した方が簡単?)
数字部分を除いた所を半角英数字と全角に分離。
後は昨日考えた優先順にチェックすればOKのはず。

お題であった、《取り消し/Cancel(10E)》の場合、

1、数字をチェック
特に見あたらないのでカード名のみ1枚として扱う。

2、文字列を分解
「取り消し」「Cancel(10E)」に分解される。

3、カード名を順に検索
「取り消し」が完全一致するのでこれを採用

と言うことでマッチングは成功。

ただ、「Cancel(10E)」は想定してませんでしたしね~
展開時に「()」も半角に展開して区切り文字として採用すると言うのもありかも。
そうすれば「取り消し」「Cancel」「10E」と分解されますしね。

問題は「Cansel」。
こういうtypo系の間違いに対応する方法は結構面倒なんですよね~
テーブル作って対応とかもあるんですが…
どっかにこういうtypo辞書あったら楽なんですけどね。
ちょっと探してみようかな…(--;

コメント

最新の日記 一覧

<<  2025年6月  >>
1234567
891011121314
15161718192021
22232425262728
293012345

お気に入り日記の更新

テーマ別日記一覧

この日記について

日記内を検索