7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Swift 3.0 の String の正規表現

Last updated at Posted at 2016-12-20

Swift 3.0 の String にはこんなメソッドが定義されています:

range(of searchString: String, options: String.CompareOptions, range: Range<String.Index>?, locale: Locale?)

このメソッドを使って、options のところに .regularExpression を使えば、searchString で正規表現を利用した文字列(例えば "Qi+ta" とか)が使えます。便利。

ところがこのメソッドについて公式の資料がなく、一番近い資料なら一応 range(of:options:)range(of:options:range:)、もしくは localizedStandardRange(of:) の資料ならありますが、どれも戻り値が NSRange となっています。

しかし実際このメソッド書いてみると分かりますが、戻り値は Range<String.Index> と、Swift Foundation で定義された型となっております。String が実際文字管理に使っているインデックスなので NSString とか NSRange が介在せず文字を扱うライブラリの違いによるインデックスの相違もきにする必要がなくなる。

ただ問題は前述の通り、公式資料にはこのメソッドが載っておらず、また Xcode からでも該当メソッドの定義にはジャンプできない。自分ではまだ試してないがもしかするとこれはプライベート API の可能性もありますので、その場合は App Store に配布するアプリにはこのメソッドが使えないのでご注意を。(公式資料がまだ更新されてないってだけならいいんだけどな…)

==========================追記==========================
@woxtu さんのおかげで公式資料発見しました。これで安心して使えますw

7
9
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?