出来てよかったこと, 悪いこと両方あります.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のiOSバージョン : iOS14.7.1
スポンサーリンク
正規表現を利用
過去に投稿したレシピでの最大の問題なのがこの大文字小文字検索です.
「ファイルにフィルタを適用」はiOS14以降で改悪されたリスト検索の代わりとして貢献したものの, 唯一の欠点がこの大文字小文字の区別です.
このアクションでは大文字小文字の区別を行い, かつ無視するよう変更することができません.
なので例えば"Twitter"をtwitterで検索シても結果は出てこないのです.
そのため上記レシピではやむを得ず元データの辞書のキーにあたるすべての文字のアルファベットを小文字に直してから配布し, 「入力を要求」で入力した文字列を小文字に直してから配布データで検索する仕組みです.
当然ですが通常大文字を含む「見た目」に慣れている場合, すべて小文字だとどうしても違和感を覚えるものです.
しかし現時点ではこれ以上の改善案は思いついていませんでした, メニューやリストからの選択で項目数が増えると一気に動作が重くなるため, その手法が使えなくなったのが前回のUSLauncherでした.
大文字小文字を区別せず検索
というわけで今回思いついた, 大文字小文字を区別せず検索する方法です.
元データをどうするかは色々あると思います.
今回は辞書を使うこととします.
与えた辞書のすべてのキーに対し, 「テキストを分割」で改行で分割します.
「入力を要求」で検索ワードを入力させます.
これを使い, 「一致するテキスト」で
.*指定入力.*
にマッチさせます.
正規表現 .* は先日の記事でも紹介したように, 0文字を含む任意の文字を意味します.
つまり「入力を要求」で指定した文字を含む行をマッチさせることが可能です.
ここで「一致するテキスト」の「大文字/小文字を区別」を必ずオフにします.
これが今回の肝心な部分です, 「ファイルにフィルタを適用」で区別ができないことの代案となります.
あとは例えば「リストから選択」で一つなり複数を選ばせます.
実際にはその先に何かをするわけですが今回は大文字小文字の区別をせず検索することが目的なので省略します.
実行
これで入力した文字列を, 大文字小文字の区別無しに選ぶことができます.
入力側が大文字でも同じ結果になります.
〆
これを利用して先程紹介したUSLauncherにも適用できると期待していたのですが, キーを取得する時点でレシピが落ちてしまいました.
どうやら扱う文字数が多いとこの手法ではダメのようです.
ちなみに
<key>1</key><string>1</string>
<key>2</key><string>2</string>
<key>3</key><string>3</string>
…
というシンプルな形式で試したところ, 2230行まではOKで2231行からレシピが落ちるのを確認しました.
2230行以下であればこの方法で大文字小文字の区別なく検索できるというわけですね.
というわけでUSLauncherの改善はお預けになってしまいました…