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

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

ただいまの
回答率

90.47%

  • Swift 2

    1334questions

    Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

  • Xcode 7

    615questions

    Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

  • iOS 9

    214questions

    iOS 9は、アップル社のモバイルOSであるiOSシリーズのバージョン。特徴として検索機能の強化、Siriの機能改良、iPad向けマルチタスクなどがあります。マルチウィンドウ機能をサポートし、iPad向けマルチタスクもサポートされています。

Swift: キリ番(ゾロ目)判定方法:iOS

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 799

ra-men

score 86

Swiftにて取得したintがキリ番かどうか判定したいのですがどうやれば良いでしょうか?

例えば現在のintの値がゾロ目(777,1111,9999など)の場合において、それをif文にて判定し処理を分岐したいのですが,ゾロ目判定処理はどのように記述すれば良いでしょうか?

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

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

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • fuzzball

    2016/04/19 17:22

    キリ番の定義を書いて下さい。

    キャンセル

  • 退会済みユーザー

    2016/04/19 17:22

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 2

checkベストアンサー

+2

細かい確認まではしていませんが、ゾロ目判定ならば以下でいけるとおもいます。
引数に渡す数字を変更して試してみてください。

※ コメント欄の「fuzzballさん」のアドバイスを反映しました。m(_ _)m

if zoromeCheck(222222222) {
    print("ゾロ目")
} else {
    print("Not ゾロ目")
}
// ゾロ目


// ゾロ目判定メソッド
func zoromeCheck(num: Int) -> Bool {
    let nsstring = String(num) as NSString
    let pattern = "^([1-9])\\1+$"
    let match = nsstring.rangeOfString(pattern, options: .RegularExpressionSearch)
    return match.location != NSNotFound
}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/20 00:00

    ありがとうございます!無事できました!

    キャンセル

  • 2016/04/20 01:10

    [1-9]で良いかもですね。

    キャンセル

  • 2016/04/20 01:27

    確かに「0000」は考えにくいのでアドバイスを回答に反映させてもらいました。m(_ _)m

    キャンセル

  • 2016/04/20 07:27 編集

    考えにくいというか、入力がIntなので。(そういう私はこの後、この正規表現を理解する作業に入りますw)

    キャンセル

  • 2016/04/20 07:29

    ですね。文字列と混同してました…

    キャンセル

  • 2016/04/20 11:51 編集

    Swift純正品のrangeOfStringもありました。(一行にしているのはオマケです)

    return String(num).rangeOfString("^([1-9])\\1+$", options: .RegularExpressionSearch) != nil

    キャンセル

  • 2016/04/20 12:22

    Stringにもあるんですね!知りませんでした。サジェストにないなぁって思ったら、デフォルト引数でした。

    これからはこっちを使いますー。m(._.)m

    キャンセル

0

Swiftに不慣れな私が正規表現を使わずに書いてみました。
分かり易くしようと思っていたのに、全く意味不明なコードになっていまいましたw

func zoromeCheck(num: Int) -> Bool {
    //二桁以上チェック(11にしてもいいけど)
    guard num >= 10 else {
        return false
    }
    //String化
    let str = String(num)
    //1文字目だけをNSCharacterSet化
    let setOne = NSCharacterSet(charactersInString: String(str[str.startIndex]))
    //全体をNSCharacterSet化
    let setAll = NSCharacterSet(charactersInString: str)
    //スーパーセットになっていればゾロ目!
    return setOne.isSupersetOfSet(setAll)
}

 ボツ作品

ちょっと分り易いけど遅かったのでボツ。

func zoromeCheck(num: Int) -> Bool {
    //二桁以上チェック
    guard num >= 10 else {
        return false
    }
    //String化
    let str = String(num)
    //1文字目以外のNSCharacterSetを生成
    let set = NSCharacterSet(charactersInString: String(str[str.startIndex])).invertedSet
    //1文字目以外が含まれていなければゾロ目!
    return str.rangeOfCharacterFromSet(set) == nil
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.47%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    Swiftの文法について

    let a = (Int)(arc4random_uniform(3)) //Swift1.2で乱数を発生させたい時にこう記述する必要があるそうですが //aを定数として宣言

  • 解決済

    PickerViewの使用の時のエラーについて

    初めまして。 今年の3月からswiftをやり始めました。 現在、PickerViewを使用したくて、参考にしているサイト通りにしているのですが、エラーが出て困っています。 助

  • 解決済

    [swift]pickerの初期値が設定できない

    cellに配置したpickerの初期の値を設定したいのですが、できません。 下記のコードで、何が間違っているのでしょうか? コード import UIKit //xl

  • 解決済

    TextField内の数値をInt型で取り出したいです

    前提・実現したいこと プログラミング初心者です TextField内の数値をInt型で取り出したいです。 Swift3.X での入力がわかりません。 発生している問題・

  • 解決済

    swiftの関数について質問です。

    前提・実現したいこと swiftについて勉強していたところ、理解できないコードがあり調べてもよくわからなかったので質問させてもらいました。 該当のソースコード func mak

  • 解決済

    「iOSアプリ開発集中講座」を読み始めて、つまづいています

     前提・実現したいこと iOSアプリ開発集中講座 p127 でつまづき  発生している問題・エラーメッセージ Cannot invoke initializer for typ

  • 解決済

    swift4 強制アンラップした変数の代入

    テストの点数を当てるという簡単なアプリを作成中なのですが、 記載のコードのfunc内でscore_intはInt型になっていないのでしょうか? if文のscore_intに!を外す

  • 解決済

    swift の足し算でラベルを自動で更新する方法を教えてください

    swiftで足し算をしてラベルに答えを表示するコードを書こうとしています ですが、なぜかString をIntに変換できないし、ボタンを押さずに自動で表示する方法もわかりません

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

  • Swift 2

    1334questions

    Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

  • Xcode 7

    615questions

    Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

  • iOS 9

    214questions

    iOS 9は、アップル社のモバイルOSであるiOSシリーズのバージョン。特徴として検索機能の強化、Siriの機能改良、iPad向けマルチタスクなどがあります。マルチウィンドウ機能をサポートし、iPad向けマルチタスクもサポートされています。