文字列が数値だけか確認する

どこかのサイトでキャストできれば数値でいいんじゃね、と書いてあってなるほどと思ったけど、どうやら Int の上限を超える場合は問題になるらしい。ので、文字列が電話番号として使えそうかどうか?の確認には使えないね、と。なるほど。

if let numeric = Int(text) {
    print("Numeric")
} else {
    print("Not only numeric")
}

参考にしたサイト:

文字列が許可された文字かどうかをNSCharacterSetで判定する

上記を参考に Swift 4 で書き直して見た。

extension String {
    public func isOnly(_ characterSet: CharacterSet) -> Bool {
        return self.trimmingCharacters(in: characterSet).count <= 0
    }
    public func isOnlyNumeric() -> Bool {
        return isOnly(.decimalDigits)
    }
    public func isOnly(_ characterSet: CharacterSet, _ additionalString: String) -> Bool {
        var replaceCharacterSet = characterSet
        replaceCharacterSet.insert(charactersIn: additionalString)
        return isOnly(replaceCharacterSet)
    }
}

CharacterSet 使うと楽らしい。

指定できる CharacterSet は公式のサイトから参照するか、Xcode 上で補完してもらうか。

CharacterSet (公式)

参考にしたサイト:

Swiftで文字列から不要な文字を指定して削除したり、必要な文字だけを抽出する方法

フォローする