CharacterSetを定義する
CharacterSetとは
言葉通り文字の集合である。Appleのドキュメントにも書いてあるが、文字列の中から特定の文字を検索したいときなどに使う構造体。自分も以前そのような用途で使ったことがある。
CharacterSet - Foundation | Apple Developer Documentation
CharacterSetを定義する
自分は以前CharacterSet
を使用したことがあるが、static var
で既に定義されているdecimalDigits
やalphanumerics
しか使ったことがない。しかし、先日ドキュメントを眺めていたら、コンストラクタinit(charactersIn:)
を呼べば、自分でも定義できることを知った。
// 文字a, b, cを含んだ文字の集合 let abcSet = CharacterSet(charactersIn: "abc")
CharacterSetを使用する例
自分でCharacterSet
を定義できれば、そのCharacterSet
を使い文字の検索ができる。例えばこんな感じ。
extension CharacterSet { // 16進数で使用する文字の集合を定義 static var hexDigits = CharacterSet(charactersIn: "0123456789ABCDEFabcdef") } func checkHexDigits(from string: String) { // 文字列に16進数表す文字以外が含まれていないかチェック if string.rangeOfCharacter(from: CharacterSet.hexDigits.inverted) != nil { print("target string(\(string)) contains non hex digits") } } var colorCode = "ffFFff" checkHexDigits(from: colorCode) colorCode = "ffFFfg" checkHexDigits(from: colorCode)
実際にPlaygroundで実行すると以下となる。
"ffFFfg"の'g'はhexDigits
に含まれてないので出力される。
アプリを開発する際も、このようにCharacterSet
を定義して、バリデーションなどに使えると思う。