どこかのサイトでキャストできれば数値でいいんじゃね、と書いてあってなるほどと思ったけど、どうやら 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 上で補完してもらうか。
参考にしたサイト:
Swiftで文字列から不要な文字を指定して削除したり、必要な文字だけを抽出する方法