post Image
Swift4で変更されたStringAPIをいくつか試してみた

はじめに

Swift4になり、String APIにいくつかの変更があったようなので、実際にPlaygroundで試してみました。

検証環境

以下の環境を使用しています。

  • macOS Sierra Version 10.12.4
  • Xcode Version 9.0.0 β1

Multi-line string literals

複数行の表示がより直感的に簡潔になりました。
以前では複数行表示する際にescaping sequenceを使用し、\nで改行するか、printを複数行使用する必要がありましたが、Swift4では、「”””」で文字列を囲むことで、複数行の文字列の表示が可能です。

具体例

Swift3
print("あいうえお かきくけこ")
print("さしすせそ たちつてと\nなにぬねの はひふへほ")
print("まみむめも や ゆ よ\nらりるれろ わ を ん")
Swift4
 print("""
あいうえお かきくけこ
さしすせそ たちつてと
なにぬねの はひふへほ
まみむめも や ゆ よ
らりるれろ わ を ん
""")

stringが再びCollectionTypeに

StringがCollectionTypeになったことにより、filterやmapを使用した直感的な記法が使えるようになりました。

具体例:文字列から ! を除外する

Swift3
var string = "Don’t ask for permission!, beg for forgiveness!"
let filtered = String(string.characters.filter{ !"!".contains($0) })
Swift4
var string = "Don’t ask for permission!, beg for forgiveness!"
let filtered = string.filter{ $0 != "!" }

具体例2:文字列の先頭6文字のみ残す

Swift3
let string = "we can't"
let prefixed = String(string.characters.prefix(6))
Swift4
let string = "we can`t"
let prefixed = string.prefix(6)

所感

charactersを介さずに書けることになったことにより、非常に簡潔な書き方ができるようになったと思います。個人的にはMulti-line string literalsが地味に便利だなと感じました。

参考文献

Exploring the new String API in Swift 4


『 Swift 』Article List