【Swift】文字列の末尾を取得/削除する方法!SubSequenceとは?

この記事からわかること
- Swiftで文字列の末尾文字を取得/削除する方法
- lastプロパティとは?
- dropLastメソッドとは?
- suffixメソッドとは?
- SubSequenceとSubstringとは?
index
[open]
\ アプリをリリースしました /
Swiftで文字列の末尾1文字を取得する方法
var last: Self.Element? { get }
Swiftで文字列の末尾1文字だけを取得するにはString
構造体のlast
プロパティを使います。
let str = "Hello World"
print(str.last) // d
出力する際はそのままで問題ないですが、変数に格納する際は注意が必要です。last
プロパティで取得した型を出力してみるとオプショナル型のCharacter
に変わっているのが分かります。なのでString
型の変数に格納する際は明示的にキャストして格納します。
var result:String = ""
let str = "Hello World"
print(type(of: str.last)) // Optional<Character>
result = String(str.last!)
文字列末尾から任意の文字数を抽出
func suffix(_ maxLength: Int) -> Self.SubSequence
last
プロパティでは最後の1文字だけを取得できましたが任意の文字数だけ抽出したい場合はsuffix
メソッドを使用します。引数には抜き出したい文字数を数値(Int型)で指定します。
let str = "Hello World"
print(str.suffix(5)) // World
suffix
メソッドも同様に戻り値はオプショナル型のCharacter
になるので注意してください。
var result:String = ""
let str = "Hello World"
print(type(of: str.last)) // Optional<Character>
result = String(str.last!)
文字列の最後の文字を削除する
func dropLast(_ k: Int) -> Self.SubSequence
文字列の最後の文字を削除するにはdropLast
メソッドを使用します。
let str = "Hello World"
print(String(str.dropLast())) // Hello Worl
dropLast
メソッドも同様に戻り値はオプショナル型のCharacter
になるので注意してください。
定義元を見てみると戻り値はSubSequence
となっています。
SubSequenceとは?
SubSequence
型とはコレクションの要素の連続した部分範囲を表すコレクションを表しています。実際に使用される際はその時に適した型が当てはめられて使用されます。今回のようなString型の場合はSubstring
型のタイプエイリアスが当てはまります。
typealias SubSequence = Substring
Swiftでは文字列を表すString型も Collectionプロトコルに準拠しており集合体(Character型の集合)として扱われています。その部分集合としてSubstring
型が返ってくるようになっています。
Substring
型の公式リファレンスによると「文字列をスライスすると高速に処理できるSubstringに変わる」と記載されていました。
どうやら処理を早くするためにキャストされてしまうようです。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。
個人開発に限界を感じたらiOSに特化したプログラミングスクール「iOSアカデミア」も検討してみてください!無料相談可能で「最短・最速」でiOSエンジニアになれるように手助けしてくれます。