【Swift】CharacterSet構造体とは?特定の文字抽出や削除
この記事からわかること
- SwiftのCharacterSet構造体とは?
- 文字列に任意の文字が含まれているかチェックする方法
- 文字列の両端から任意の文字を削除する方法
- rangeOfCharacterとtrimmingCharacters メソッド の使い方
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
CharacterSet構造体とは?
SwiftのCharacterSet
は、文字(Character型)の集合を表現するための構造体です。Swiftでは文字を扱うデータ型としてString型やCharacter型など複数用意されています。CharacterSetはその中でも、特定の文字(アルファベット、数字、記号など)を含む文字列を操作することができます。
またCharacterSetは、Unicodeスカラーを対象に機能しています。UnicodeスカラーとはUnicodeにおいて文字を表現するための数値のことです。String型やCharacter型も内部的にはUnicodeスカラーとして文字情報を保持しています。
CharacterSetには、様々なメソッドやプロパティが用意されており、例えば文字列の中に特定の文字が含まれているかどうかを調べたり、文字列を特定の文字で区切ったり、文字列から特定の文字を削除することができます。
例:数字だけ抽出する、句読点で区切る、改行を削除する
CharacterSetオブジェクトの生成
任意の文字情報を持たせたCharacterSetオブジェクトを生成するにはinit(charactersIn string: String)
を使用します。
let chrSet = CharacterSet(charactersIn: "Hello")
print(chrSet) // <CFCharacterSet Items(U+0048 U+0065 U+006C U+006F)>
またタイププロパティとしてアルファベットや数値、改行などのセットがあらかじめ定義されています。どちらかというとタイププロパティを使用することのが多いと思うのでよく使うものだけリストアップしておきます。
struct CharacterSet {
static var alphanumerics // 数字とアルファベットの両方を含む文字セット
static var decimalDigits // 数字のみを含む文字セット
static var letters // アルファベットのみを含む文字セット
static var lowercaseLetters // 小文字のアルファベットのみを含む文字セット
static var uppercaseLetters // 大文字のアルファベットのみを含む文字セット
static var punctuationCharacters // 句読点を含む文字セット
static var whitespaces // スペース、タブ、改行などの空白文字を含む文字セット
static var newlines // 改行文字のみを含む文字セット
static var controlCharacters // 制御文字を含む文字セット
}
let chrSet = CharacterSet.whitespaces
print(chrSet) // <CFCharacterSet Predefined Whitespace Set>
追加する
特定のCharacterSet
オブジェクトに任意の文字のみ追加したい場合はinsert
メソッドを使用します。
var chrSet = CharacterSet.letters
chrSet.insert("-")
含まれているかチェックする
文字列の中に指定したCharacterSet
が含まれているかチェックするにはNSString
のrangeOfCharacter
メソッドを使用し、引数にCharacterSet
を渡します。
func rangeOfCharacter(from searchSet: CharacterSet) -> NSRange
let str = "Hello, World!"
let charSet = CharacterSet.punctuationCharacters
if let index = str.rangeOfCharacter(from: charSet)?.lowerBound {
print("句読点の位置:\(str.distance(from: str.startIndex, to: index))")
// 句読点の位置:5
}
特定の文字を削除する
公式ドキュメント:trimmingCharactersメソッド
文字列の両端から指定したCharacterSet
を削除するにはNSString
のtrimmingCharacters
メソッドを使用し、引数にCharacterSet
を渡します。
func trimmingCharacters(in set: CharacterSet) -> String
let str = " Hello, World! "
let trimmedStr = str.trimmingCharacters(in: .whitespaces) // "Hello, World!"
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。