Swiftにて取得したintがキリ番かどうか判定したいのですがどうやれば良いでしょうか?
例えば現在のintの値がゾロ目(777,1111,9999など)の場合において、それをif文にて判定し処理を分岐したいのですが,ゾロ目判定処理はどのように記述すれば良いでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
細かい確認まではしていませんが、ゾロ目判定ならば以下でいけるとおもいます。
引数に渡す数字を変更して試してみてください。
※ コメント欄の「fuzzballさん」のアドバイスを反映しました。m(_ _)m
Swift
1if zoromeCheck(222222222) { 2 print("ゾロ目") 3} else { 4 print("Not ゾロ目") 5} 6// ゾロ目 7 8 9// ゾロ目判定メソッド 10func zoromeCheck(num: Int) -> Bool { 11 let nsstring = String(num) as NSString 12 let pattern = "^([1-9])\\1+$" 13 let match = nsstring.rangeOfString(pattern, options: .RegularExpressionSearch) 14 return match.location != NSNotFound 15}
投稿2016/04/19 14:38
編集2016/04/19 16:26総合スコア8490
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/19 15:00
2016/04/19 16:10
2016/04/19 16:27
2016/04/19 22:31 編集
2016/04/19 22:29
2016/04/20 02:53 編集
2016/04/20 03:22
0
Swiftに不慣れな私が正規表現を使わずに書いてみました。
分かり易くしようと思っていたのに、全く意味不明なコードになっていまいましたw
swift
1func zoromeCheck(num: Int) -> Bool { 2 //二桁以上チェック(11にしてもいいけど) 3 guard num >= 10 else { 4 return false 5 } 6 //String化 7 let str = String(num) 8 //1文字目だけをNSCharacterSet化 9 let setOne = NSCharacterSet(charactersInString: String(str[str.startIndex])) 10 //全体をNSCharacterSet化 11 let setAll = NSCharacterSet(charactersInString: str) 12 //スーパーセットになっていればゾロ目! 13 return setOne.isSupersetOfSet(setAll) 14}
ボツ作品
ちょっと分り易いけど遅かったのでボツ。
swift
1func zoromeCheck(num: Int) -> Bool { 2 //二桁以上チェック 3 guard num >= 10 else { 4 return false 5 } 6 //String化 7 let str = String(num) 8 //1文字目以外のNSCharacterSetを生成 9 let set = NSCharacterSet(charactersInString: String(str[str.startIndex])).invertedSet 10 //1文字目以外が含まれていなければゾロ目! 11 return str.rangeOfCharacterFromSet(set) == nil 12}
投稿2016/04/20 02:50
総合スコア16731
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。