【Swift】CharacterSet構造体とは?特定の文字抽出や削除

この記事からわかること

  • SwiftCharacterSet構造体とは
  • 文字列任意の文字含まれているチェックする方法
  • 文字列の両端から任意の文字を削除する方法
  • rangeOfCharactertrimmingCharacters メソッド の使い方

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

CharacterSet構造体とは?

SwiftのCharacterSetは、文字(Character型)の集合を表現するための構造体です。Swiftでは文字を扱うデータ型としてString型やCharacter型など複数用意されています。CharacterSetはその中でも、特定の文字(アルファベット、数字、記号など)を含む文字列を操作することができます。

またCharacterSetは、Unicodeスカラーを対象に機能しています。UnicodeスカラーとはUnicodeにおいて文字を表現するための数値のことです。String型やCharacter型も内部的にはUnicodeスカラーとして文字情報を保持しています。

CharacterSetには、様々なメソッドやプロパティが用意されており、例えば文字列の中に特定の文字が含まれているかどうかを調べたり、文字列を特定の文字で区切ったり、文字列から特定の文字を削除することができます。

例:数字だけ抽出する、句読点で区切る、改行を削除する

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("-")

含まれているかチェックする

公式ドキュメント:rangeOfCharacterメソッド

文字列の中に指定したCharacterSetが含まれているかチェックするにはNSStringrangeOfCharacterメソッドを使用し、引数に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を削除するにはNSStringtrimmingCharactersメソッドを使用し、引数にCharacterSetを渡します。

func trimmingCharacters(in set: CharacterSet) -> String
let str = "   Hello, World!   "
let trimmedStr = str.trimmingCharacters(in: .whitespaces) // "Hello, World!"

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index