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]クラスタされているPINを取得する

1 はじめに2 前回からの修正箇所3 クラスタリングされたPINの内容を取得する3.1 クラスタリングされているPINか判別3.2 クラスタリングされているPINを取得する4 TableViewとの連 ...

【Swift】iOS13.1、Xcode11でSceneDelegate周りを触ってみた。

1 はじめに2 SceneDelegateについて3 SceneDelegateの呼ばれる順番3.1 アプリ起動時3.2 アプリバックグラウンド3.3 アプリフォアグラウンド3.4 アプリフォアグラウ ...

[Swift]半モーダルを簡単に実装できるFloatingPanelを使ってみよう!

1 はじめに2 半モーダルって?3 準備4 実装4.1 表示位置の変更4.2 スクロール領域の設定4.3 レイアウトの変更5 さいごに6 おすすめ書籍 はじめに 今回はiOSエンジニアなら1回はみたこ ...

swift

[Swift]UITableViewのカスタムセルをStoryboadで

1 はじめに1.1 前提条件2 実装2.1 Storyboadの準備2.2 UITableViewCellクラスの準備2.3 カスタムセルの表示3 さいごに はじめに こんにちは、nukkyです。 以 ...

swift

Swift3で動的にUIViewを切り替える Part2

1 はじめに1.1 前提条件2 完成イメージ3 StoryBoardの準備3.1 Viewの配置3.1.1 ① Segmentを配置するView3.1.2 ② ContainerViewを表示するVi ...

フォロー

blog-page_side_responsive

2018年9月
 1
2345678
9101112131415
16171819202122
23242526272829
30  

アプリ情報

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