2019年7月21日日曜日

Swiftの文字列操作が混乱する理由

Swiftの文字列操作をどうするのか混乱する理由は、

 ・String.indexという文字列操作は通常indexで処理する一方で、
 ・String.prefix(n)とか、String.suffix(n)、string.count

という感じで、先頭や後ろからn文字という関数も存在しているため、どちらで実装すべきかが混乱するためです。

さらにここでnは数値なのですが、String.indexから簡単にnが得られないというのが問題です。

また、String.indexを使うにしても幅のある型のため、先頭のみを使う場合に混乱することになります。さらにその範囲を含むか、含まないか、という違いで実装も変わるという、非常に複雑なものになっています。

そもそも文字列操作は、Swiftのバージョンによって大きく見直しがかけれており、それも混乱する一つの要因になっています。


いろいろといじってみると、先頭から特定の文字の前までの文字列は、Swift4.2では基本以下になるようです。

let text = String(input[input.startIndex ..< input.firstIndex(of:".")!])

やはり、prefixとかは使えないので、rangeで指定します。先頭はstrtIndexで、文字列のindexはfirstIndex(of:文字列)となるようです。さらに見つからない場合はnilになるので、!でオプショナルバインディングをアンラップします(もちろんその前にnilにならないようにしておきます)。

いやぁ、たどり着くまでに結構な時間が必要でした。勘弁してほしいわ。

0 件のコメント: