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_300rect




page_footer_300rect




-iOS
-

執筆者:


comment

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

CAPTCHA


関連記事

swift

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

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

swift

[Swift4]UITextViewにプレースホルダをつける

1 はじめに1.1 前提条件2 実装3 さいごに はじめに こんにちは、nukkyです。 UITextFieldにはプレースホルダが標準で用意されていますが、UITextViewには用意されていません ...

swift

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

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

swift

SwiftでS3への画像アップロード

1 はじめに2 AWS上での事前準備3 CocoaPodsでAWS SDKをインストールをする4 認証の設定をする5 UIImageを保存して、URLを取得する6 S3へアップロードする7 さいごに ...

[初心者向け]続・Xcodeの使い方(よく使うショートカットキーとエディタ)

1 はじめに1.1 前提条件2 ショートカットキー2.1 定義に移動(Jump to Definition)2.2 Quick Help2.3 Rename2.4 Edit All in Scope2 ...

フォロー

follow us in feedly

AppLink

英語

page_side_300rect

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

アプリ情報

目標を達成したい方を応援する、TODOアプリもリリースしております。 下記のアイコンから無料でダウンロードできます。

Web版MyCoach

私たちはより広い方にコーチングを知ってもらいたいと考えています。 下記のサイトにて、コーチの方々を紹介しておりますので、よろしければご覧ください。