iOS

[Swift4]StringのSwft4変更点と文字列操作

投稿日:2018年9月27日 更新日:

はじめに

こんにちは、nukkyです。
今回はSwift4でStringがコレクション化されましたが、あらためて文字列操作をまとめて見ました。
自分の備忘録がてら初心者の方にもStringでこういうことが出来るということを知ってもらいたいです。

Swift4でのString変更点

コレクション化

Swift 3で打ち切られていた「文字列のコレクション化」が復活しました。コレクションに適合していると、以下のようなことができます。

  • 「for in」文で列挙ができる
  • 定められた添字でアクセスができる (e.g. array[0])
  • 要素の数を調べることができる (count, isEmptyなど)
  • filter, map, flatMap, reduce, sortなどの関数が使える

基本的にはArrayやDictionaryで普段使っていると思うので、馴染みがあるのではと思います。

文字列長の取得

文字列のコレクション化に伴って、文字列の長さはcountプロパティで取得できるようになります。

今まではStringを構成するcharactersの要素数で判定する方法((ちなみに、この方法は不正確なので注意)などが取られていましたが、String自身のカウントをするだけで事足りるように強化されました。

しかも、取得できる値はUnicodeのいくつかの諸問題も解決した強固なものになっています。これまで絵文字などの特殊文字に苦しめられてきましたが、もうそこに悩む必要はなくなりそうです。

文字列を複数行で定義

Swift 4からは、複数行にわたって文字列を定義することができるようになります。
Swift 3ではこのように1行で定義しなくてはいけなかったのですが、

Swift 4ではこのように複数行にわたって定義できます。

文字列操作

英大文字、小文字変換

英大文字を小文字に変換するには.lowercased()メソッドを
英小文字を大文字に変換するには.uppercased()メソッドを使用します。

ひらがな、カタカナ変換

ひらがなをカタカナに、カタカナをひらがなに変換する場合はapplyingTransformメソッドを使用します。第1引数には「.hiraganaToKatakana」を指定し、カタカナに変換する場合は第2引数のreverseにfalseを、ひらがなに変換する場合はreverseにtrueを指定します。

半角英数小文字、全角英数大文字変換

半角英数小文字を全角英数大文字に、全角英数大文字を半角英数小文字に変換する場合はapplyingTransformメソッドを使用します。第1引数には「.fullwidthToHalfwidth」を指定し、全角英数大文字に変換する場合は第2引数のreverseにtrueを、半角英数小文字に変換する場合はreverseにfalseを指定します。

部分文字列を取得する

先頭のn文字取得するにはprefixメソッドを、末尾からn文字取得するにはsuffixメソッドを使用します。引数には取得する文字数を指定します。

指定した位置の文字列を取得する

指定した位置の文字列を取得するには[]と範囲演算子を使用します。例えば2文字目から6文字目までの5文字を取得したい場合は以下のようにします。

文字列を数値に変換する

文字列から数値に変換するにはIntやDoubleを使用します。数値に変換できない場合はnilになります。

任意の文字列を検索する

任意の文字列が含まれているかを調べるにはrangeメソッドを使用します。引数に検索したい文字列を指定すると、その文字が含まれている範囲を返します。

文字列を分割する

文字列を分割するには、componentsメソッドを使用します。引数には分割に使用する文字列を指定します。.newlineで改行コードの指定も可能です。

文字列の置換

文字列を置換するには replaceSubrangeメソッドを使用します。第1引数に置換する範囲を、第2引数に置換後の文字列を指定します。

先ほどのreplaceSubrangeメソッドは変数の中の文字列を直接書き換えるものです。置換後も元の文字列を保持しておきたい場合はreplacingCharctersメソッドを使用します。

基数変換

10進数を2進数や16進数に変換したり、2進数や16進数を10進数に変換するにはIntやStringを使用します。

0で埋める

0埋めした数値を作成したい場合は、Stringでformat指定をします。

さいごに

StringのSwift4の変更点とよく使いそうな文字列操作をまとめて見ました。個人的にはcountがとてもありがたいですね。
私自身もあまり使用しない文字列操作はやり方を忘れがちなので結構お役に立てるのではと思っています。

RE:ENGINESブログ「iOS記事」まとめページはこちらから

参考

[iOS 11] Swift 4は前バージョンから何が変わったか比較した
あなたの知らないCollectionの世界
https://developer.apple.com/documentation/swift/string

おすすめ書籍

詳解 Swift 第4版  リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)  よくわかるAuto Layout iOSレスポンシブデザインをマスター

page_footer_responsive




-iOS
-

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

swift

Swift3 [XIBファイル] コードでの呼び出し方まとめ

1 はじめに1.1 前提条件2 TableViewCell2.1 XIBの準備2.2 ViewControllerでの呼び出し3 CollectionView3.1 XIBの準備3.2 ViewCon ...

[Swift]忘れられがちなSFSafariViewControllerについて

1 はじめに1.1 前提条件2 SFSafariViewControllerとは2.1 SFSafariViewControllerの特徴2.2 iOS11からのCookie同期について3 SFSaf ...

swift

iOSアプリのチュートリアルに便利なMMPopLabel

1 はじめに2 準備3 実装3.1 Storyboard3.2 MMPopLabelの準備3.3 MMPopLabelの表示3.4 Delegate4 さいごに はじめに こんにちは、nukkyです。 ...

swift

端末のモデル名やサイズを簡単に取得できるライブラリ「Device」

1 はじめに2 準備3 試してみる3.1 端末モデル名3.2 画面サイズ3.3 端末の種類4 さいごに はじめに こんにちは、nukkyです。 今回は端末のサイズやモデル名などを 簡単に取得できるライ ...

[Swift]プロトコルの拡張で既定値を設定する。

1 はじめに2 プロトコルの拡張について2.1 プロトコルに既定値を設定2.2 プロトコルを設定したクラスの作成2.3 制約をつけてプロトコルに既定値を設定3 さいごに4 おすすめ書籍 はじめに こん ...

フォロー

follow us in feedly

page_side_300rect

2018年9月
« 8月 10月 »
 1
2345678
9101112131415
16171819202122
23242526272829
30 

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。