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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

1回答

702閲覧

Swiftでのcase文に正規表現が使用できるかどうか

wineread

総合スコア1

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2022/06/12 10:43

編集2022/06/12 16:10

初めて使用させていただきます。
一応一通り調べてみたのですが詰まってしまいまいたので質問させていただきます。

困っていること
・case に正規表現の記述ができるのかどうか

@IBOutlet weak var label: UILabel self.label.text = "090-1234-5678" switch self.label.text { case "^0[789]0-[0-9]{4}-[0-9]{4}$":   print("携帯番号だよ") case (正規表現省略):   print("ハイフンなし電話番号だよ") default:   print("電話番号じゃないよ") }

といった具合にハイフン有り無しの番号によってメッセージパターンを変更したいです。
そもそもの初歩的なミスかもしれませんが
ご教授お願いいたします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SwiftのSwitch Statementはswitchの型に合わせたcaseを記述する必要があると思います。
switchがStringであればそれと==で比較するようなcaseになると思います。

https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID436

Swiftの正規表現はNSRegularExpressionの型を使用しますので、
ちょっとできないのかなと思いました。
https://developer.apple.com/documentation/foundation/nsregularexpression

もうちょっと最適な形があるかもしれませんが、
次のような感じになると思いました。

swift

1var title = "090-1234-5678" 2if let regex = try? NSRegularExpression(pattern: "^0[789]0-[0-9]{4}-[0-9]{4}$"), 3 0 < regex.matches(in: title, range: NSRange(0..<title.count)).count { 4 print("携帯番号だよ") 5} else if let regex = try? NSRegularExpression(pattern: "^0[789]0[0-9]{4}[0-9]{4}$"), 6 0 < regex.matches(in: title, range: NSRange(0..<title.count)).count { 7 print("ハイフンなし電話番号だよ") 8} else { 9 print("電話番号じゃないよ") 10}

投稿2022/06/12 11:51

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wineread

2022/06/12 12:17 編集

複数の分類をしたかったためswitch分が使えたら便利だなとは思ったのですが……そうでしたか。ドキュメント読解不足で申し訳ありません。 いただいた回答をもとに進めてみようと思います。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問