質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

解決済

Swift Filter Like文 あいまい検索(部分一致)について

ataru2222
ataru2222

総合スコア262

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

2回答

0リアクション

0クリップ

319閲覧

投稿2022/08/25 11:53

編集2022/08/28 14:03

実現したいこと

Swiftでのあいまい検索(部分一致)

発生している問題・エラーメッセージ

現在Swiftでのあいまい検索(部分一致)の機能を実装したいと思っているのですが
他の言語にあるような Like "*" & target & "*" のようなことってできますか?

下のようなコードで色々試してみたのですが入る値が空欄の場合は全件取得したいです。
SwiftでFilterの部分一致の機能を実装するにはどのように書いたら良いでしょうか?

該当のソースコード

Swift

import UIKit class ViewController: UIViewController { var csvArray: Array<Array<String>> = [] var dataArray: Array<Array<String>> = [ ["1","東京","男性","38","2"] ,["2","東京","男性","31","2"] ,["1","東京","女性","23","2"] ,["3","東京","男性","20","2"] ] override func viewDidLoad() { super.viewDidLoad() //★★★★★の部分をLike "*" & target & "*"のような条件式にしたい csvArray = dataArray.filter{$0[0] == "1"} //★★★★★ print(csvArray) } }

試したこと

・Swift Like文 あいまい検索等のキーワードで調べるも分かりませんでした。
・Like "*" & target & "*" Likeが使えずエラー
・== "*" & target & "*" ワイルドカードが機能していないので0件
・!= "" は全件取得はできたのですが、あいまい検索ではないので却下

※ワイルドカードの半角がここでは表示できなかったので全角にしてあります。

こちらについて詳しい方いらっしゃいましたら、ご教授願います。
よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

ataru2222

2022/08/25 12:16

hoshi様早速ありがとうございます。 csvArray = dataArray.filter{$0[0].contains("1")} でも検索できるようになったのですが、 csvArray = dataArray.filter{$0[0].contains("")} や csvArray = dataArray.filter{$0[0].contains("**")} では全件取得できないです。 他の言語のワイルドカードのようなものの使い方ってできるのでしょうか?
hoshi-takanori

2022/08/25 17:46

Swift では contains("") は false になるようですね。(いま知った…。) ってことは dataArray.filter { target.isEmpty || $0[0].contains(target) } かなぁ。
ataru2222

2022/08/26 11:58

できました!!! SwiftのLike文めちゃくちゃ難しいですね(笑) filterの条件もこんな書き方ができることも勉強になりました。 いつもいつも本当にありがとうございます。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています