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レスポンシブデザインをマスター

blog-page_footer_336




blog-page_footer_336




-iOS
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

[Swift]カメラデバイスで使用できる解像度の中で、最大のサイズを設定する

1 はじめに2 フォーマット一覧の取得3 フォーマットを設定する4 カメラデバイスで使用できる解像度の中で、最大のサイズを設定する5 さいごに6 おすすめ書籍 はじめに iOSでカメラの映像を画面に表 ...

[Swift]MapViewでクラスタ機能を利用する。

1 はじめに2 クラスタリングとは3 PINのクラスタリング機能を利用する3.1 マップの作成3.2 PINの作成3.3 Pinのカスタマイズ3.4 カスタムしたPinの利用3.5 CustomPin ...

iOSでFirebase Authenticationを実装してみる その1

1 はじめに2 Firebaseプロジェクトの設定3 新規ユーザー登録4 既存ユーザーのログイン5 匿名ログイン6 エラーメッセージ7 最後に8 おすすめ書籍 はじめに はじめまして、Yossyです。 ...

SwiftGenを使ってみた

1 はじめに2 SwiftGenの特徴2.1 コードジェネレートするリソースを選択することができる2.2 コードジェネレートするのにビルドが必要ない2.3 設定ファイルベースである3 インストール4 ...

swift

Swift3でMapKitの吹き出し(Callout)タップを取得したい!

1 はじめに2 MapKitでの吹き出しタップ3 吹き出しのみタップしたい!4 さいごに はじめに こんにちは、nukkyです。 今回、iOSのMapKitでGoogleMapのように 吹き出しのタッ ...

フォロー

blog-page_side_responsive

2018年9月
 1
2345678
9101112131415
16171819202122
23242526272829
30  

アプリ情報

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